Frühjahr JavaMailSenderImpl javax.E-mail.NoSuchProviderException: smtp
Habe ich ein sehr großes Projekt mit einer Tonne von Abhängigkeiten, und erhalte die folgende Ausnahme ausgelöst, wenn Sie versuchen, E-mail senden:
javax.mail.NoSuchProviderException: smtp
Ich weiß, der code funktioniert, weil es ist Teil einer Bibliothek, die in anderen Projekten verwendet. Weiß jemand, was das verursachen würde diese Ausnahme zu geschehen? Ich schaute durch alle jar ' s und der einzige mit 'javax.E-mail' ist 'mail-1.4.4-SNAPSHOT.jar'.
Gibt es eine Datei/Klasse, registriert das 'smtp', Protokoll und könnte es passiert sein, irgendwo sonst in meinem classpath?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist schon eine Weile her seit diese Frage gestellt wurde aber es ist immer noch lohnt zu beantworten :
Was passiert, ist, dass Ihre E-mail-Dienst der SMTP - (in der Regel, es ist sogar als Standard-Protokoll) - Protokoll, um E-mail senden. Egal, welche konkrete Klasse, die Sie verwenden, wie E-mail-Dienst (könnte davon abhängen, ob man die Arbeit mit Java EE, Spring oder etwas anderes), es endet mit Klassen aus der javamail-API. In dieser API, um eine Verbindung zu Ihrem mail-server, der eine Instanz von javax.E-mail.Sitzung erzeugt und dieses Objekt wird das dynamische laden von Klassen, die die Unterstützung für das Protokoll zu verwenden.
Beim laden der Klasse erforderlich, im Falle Sie nicht gefunden, die "ClassNotFoundException" gefangen und wieder warf als javax.E-mail.NoSuchProviderException, mit dem Hinweis auf die fehlenden Protokoll-Unterstützung.
Die Lösung in diesem Fall ist das hinzufügen der smtp.jar Ihren Klassenpfad ein.
Mit einem Maven-Projekt, fügen Sie einfach die folgende Abhängigkeit
Hatte ich dieses Problem. Setzen smtp.jar im classpath das Problem gelöst.
Den Weg, den ich behoben haben war das entfernen der E-mail-Glas aus dem classpath. Irgendwo in den classpath existiert eine weitere Instanz von mail.jar und ich war noch in der Lage, es zu finden. Wenn jemand läuft in das problem, weitere Informationen über Problemlösungen finden Sie hier:
http://forum.springsource.org/showthread.php?t=90737
und
http://forums.sun.com/thread.jspa?threadID=5442371
Ich habe dasselbe problem beim aktualisieren von jboss 4.x 6.x.
Problem hier ist das setzen des classpath für die mehr Zahl der mail.jar Dateien(Standard-server die mail.jar aus seiner common/lib foler, wenn es dort verfügbar).
Bestätigen Sie die jar-Datei, benutzt es, folgende Anweisung ist nützlich.
System.aus.println(getClass().getResource("/javax/mail/Address.class"));
wenn es mit dem anderen jar-Datei, die Sie nicht erwartet.. set classpath, dass anstelle der Sie mit. andere Weise zu entfernen, dass die jar-Datei aus dem oben gedruckten Lage.
Dies kann auch passieren, wenn Sie eine falsche version der "mailapi.jar" Datei in den classpath als gut.
Würd ich vor kurzem aktualisiert ein Projekt für die Nutzung von PayPal soap API und PayPal-distribution enthalten ist ein mailapi.jar Datei, die anders war als die, die ich würde derzeit hatte in meinem Projekt, und ließ meine app, um Fehler beim senden von mail.
Also für mich, ich musste nur wieder meine alten mailapi.jar und ich war in Ordnung.
Hatte ich dieses isssue jetzt. Das problem war, zwei javax.mail.jar in der gleichen classpath.