Ich habe schon seit Tagen versucht, Mails aus der Grails-Anwendung zu verschicken. Ich benutze:
Speziell versuche ich, E-Mail mit Exchange von Anwendung zu senden, die auf Tomcat-Server über Port 25 ohne Authentifizierung, ohne SSL bereitgestellt wird.
Ich habe versucht, eine Nachricht mit telnet von der virtuellen VMWare-Maschine zu senden, auf der die App installiert ist, und es ging durch.
Dies ist meine Klasse für das Versenden von Mails:
%Vor%Dies ist ein Fehler-Stack-Trace:
%Vor%Ich habe ein paar Dutzend Posts gelesen, in denen ich Probleme wie diese sehe, aber ich habe es immer noch nicht geschafft, das Problem zu lösen. Jede Hilfe wird geschätzt.
* BEARBEITEN: * Ist es möglich, dass es Probleme beim Senden von Mails mit javaMail mit Exchange Server SMTP gibt, wenn keine Authentifizierung vorhanden ist?
Wenn Sie versuchen, eine Verbindung zu Ihrem Mail-Server ohne -Authentifizierung herzustellen, rufen Sie die connect-Methode auf, die nicht einen Benutzernamen und ein Passwort annimmt. Wenn Sie ihm einen Benutzernamen und ein Passwort übergeben, denkt er, dass Sie sich wirklich authentifizieren möchten, und da er keinen Authentifizierungsmechanismus finden kann, der vom Server unterstützt wird, schlägt er fehl.
In meinem Fall musste ich die Eigenschaft
festlegen %Vor% bis "false"
(zusätzlich zum Hinzufügen der Eigenschaft "mail.smtp.auth"
zu "false"
, was jedoch gemäß dieser Link )
Vor dem Festlegen von "mail.smtp.ehlo"
auf "false"
habe ich die folgende Debug-Ausgabe gesehen (aktiviert durch Setzen der Eigenschaft "mail.debug"
auf "true"
):
und dann erhalten Sie die gleiche javax.mail.AuthenticationFailedException
.
(In diesem Fall war der SMTP-Server ein Microsoft-Server)
Nun, es sieht so aus, als hätte ich wenig Probleme. Zunächst wurde Exchange nicht ordnungsgemäß eingerichtet. Und dann scheint es, dass ich alle möglichen Konfigurationen ausprobiert habe, aber die richtige. Das funktioniert:
%Vor%Der letzte Hinweis war Bill Shannons Post. Danke Bill!
Überprüfen Sie, ob der Server, auf den Sie treffen, eine Authentifizierung vornimmt oder nicht. mehr dazu im Code.
Legen Sie einen mail.debug in die Eigenschaften zu wissen, was genau zwischen Ihrem Code und dem passiert Mail-Server. mehr dazu im Code.
Hier ist ein einfacher Code, der für mich mit dem Mailserver meiner Firma gut funktioniert:
%Vor%Hier ist meine Lösung, vielleicht ist es nicht der beste Weg, aber es funktioniert für mich ...
in der mail-config.xml:
%Vor%und hier ist die Einstellung:
%Vor%und schließlich der Code:
%Vor%Tags und Links java grails authentication javamail exchange-server