Hallo zusammen,
ich habe mich mit der Einrichtung von SMTP auf meiner Discourse-Installation herumgeschlagen, und es war eine ziemliche Herausforderung. Ich habe zahlreiche Beiträge durchsucht, wie z. B. diesen, aber ohne Erfolg.
Hier ist die Sachlage: Ich vermute, dass meine Probleme mit dem Format und der Länge des Benutzernamens und des Passworts zusammenhängen, die ich verwenden muss. Ich nutze Azure Communication Service für meinen SMTP-Server, der eine spezifische Konfiguration mit einer Azure Entra App (früher Azure Active Directory) erfordert.
Um auf den Punkt zu kommen, das Benutzernameformat sieht ungefähr so aus (keine tatsächlichen Anmeldedaten, nur ein Beispiel):
<Name der Azure Communication Services-Ressource>.<ID der Entra-Anwendung>.<ID des Entra-Mandanten>
Hier ist ein Beispiel: my-communication-service.7d8233e0-c230-4468-a2de-1d03aa64bb71.49ba4f9c-3b18-43df-b5fd-5e203ba6e031
Weitere Details finden Sie unter diesem Link.
In der Zwischenzeit muss das Passwort einem von Azure generierten geheimen Format entsprechen, wie zum Beispiel:
b_C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M
Nun habe ich diese Einrichtung mit ähnlichen Anmeldedaten in C# reibungslos zum Laufen gebracht.
private static void SendMail()
{
string smtpAuthUsername = "my-communication-service.7d8233e0-c230-4468-a2de-1d03aa64bb71.49ba4f9c-3b18-43df-b5fd-5e203ba6e031";
string smtpAuthPassword = "a~C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M";
string sender = "DoNotReply@my-domain.com";
string recipient = "admin@my-domain";
string subject = "You a chosen";
string body = "One gorgeous body";
string smtpHostUrl = "smtp.azurecomm.net";
using (var client = new SmtpClient(smtpHostUrl))
{
client.Port = 587;
client.Credentials = new NetworkCredential(smtpAuthUsername, smtpAuthPassword);
client.EnableSsl = false;
var message = new MailMessage(sender, recipient, subject, body);
try
{
client.Send(message);
Console.WriteLine("The email was successfully sent using Smtp.");
}
catch (Exception ex)
{
Console.WriteLine($"Smtp failed with the exception: {ex.Message}.");
}
}
}
Wenn ich jedoch versuche, diese Einstellungen in Discourse zu implementieren, beginnen die Dinge, sich zu verhalten. Hier ist, was ich konfiguriert habe:
DISCOURSE_SMTP_ADDRESS: smtp.azurecomm.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: "my-communication-service.7d8233e0-c230-4468-a2de-1d03aa64bb71.49ba4f9c-3b18-43df-b5fd-5e203ba6e031"
DISCOURSE_SMTP_PASSWORD: "b_C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M"
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_SMTP_DOMAIN: my-domain.com
DISCOURSE_NOTIFICATION_EMAIL: DoNotReply@my-domain.com
Trotz dieser Einrichtung erhalte ich weiterhin eine Authentifizierungsfehlermeldung, wie im Log-Snippet angegeben:
Job exception: Net::SMTPAuthenticationError
Ich habe experimentiert, indem ich den Benutzernamen und das Passwort auf verschiedene Weise in Anführungszeichen gesetzt habe – einfache Anführungszeichen, doppelte Anführungszeichen oder sie sogar ganz weggelassen habe. Aber das Ergebnis bleibt dasselbe.
Gibt es irgendwelche Hinweise oder Vorschläge, was ich sonst noch versuchen könnte?