javax.mail.NoSuchProviderException: Kein Anbieter für SMTP

8

Ich versuche mein Java-Projekt einzurichten, um E-Mails senden zu können (per E-Mail, wenn es darauf ankommt) und bekomme jedes Mal, wenn ich es versuche, "javax.mail.NoSuchProviderException: Kein Provider für smtps" um die folgende Zeile auszuführen (was Kopieren / Einfügen von ihrem Beispiel ist).

%Vor%

Ich habe mich umgeschaut und festgestellt, dass dies normalerweise ausgelöst wird, weil Sie die mail.jar nicht in Ihrem Klassenpfad haben, aber ich habe tatsächlich mail.jar. Da ich JDK 1.6 verwende, muss ich die activation.jar nicht in die FAQ aufnehmen ( Ссылка ). Außerdem scheint die activation.jar in Version 1.4.7 von Javamail nicht vorhanden zu sein.

Für den Fall, dass etwas beschädigt wird, habe ich die gesamte Zip-Datei von der Orakel-Website heruntergeladen, extrahiert und das Glas frisch hinzugefügt (nachdem ich das alte Glas gelöscht habe) und bekomme immer noch denselben Fehler. Irgendwelche Gedanken, was das Problem an diesem Punkt sein könnte?

EDIT: Hier ist die vollständige Stapel-Trace, die gedruckt wird:

%Vor%     
JuniorIncanter 31.05.2013, 16:08
quelle

8 Antworten

7

Es stellte sich also heraus, dass eine veraltete Version von mail.jar in einem Projekt enthalten war, das ich referenzierte. Nach der Aktualisierung dieser Kopie der mail.jar wurde das Problem behoben.

Gibt es zu einem späteren Zeitpunkt eine Möglichkeit, solche Jar-Konflikte zu protokollieren oder sichtbar zu machen?

Ссылка

    
JuniorIncanter 05.06.2013, 15:27
quelle
5

Nur für den Fall, dass jemand den gleichen Fehler macht wie ich: Sie müssen Kleinbuchstaben verwenden für die Protokollauflösung zu arbeiten. Wenn Sie SMTP als Protokollnamen anstelle von smtp eingeben, erhalten Sie NoSuchProviderException . Es funktioniert höchstwahrscheinlich für alle anderen Anbieter gleich.

    
Dariusz 07.09.2015 10:29
quelle
4

Stellen Sie sicher, dass Sie den Pfad javax.mail.jar in Ihrem Build haben. Wenn Sie Eclipse verwenden, müssen Sie möglicherweise das Projekt im Datei-Explorer aktualisieren oder mit der rechten Maustaste anklicken, den Build-Pfad konfigurieren, externe JAR hinzufügen und dann dem Build-Pfad hinzufügen. E-Mail senden mit Java gibt Arbeitscode (ich habe es getestet) für den Fall, dass Sie nur wollen schau über deine. Wenn das nicht das Problem ist, oder Sie nicht Eclipse verwenden, wäre ein Stack-Trace nett

    
Keith Aylwin 31.05.2013 17:34
quelle
3

Wenn Sie die Mail-API verwenden, stellen Sie sicher, mit welchem ​​Protokoll Sie arbeiten möchten? In diesem Fall fehlt smtp.jar mit Ihrem Eclipse-Projekt.

gibt es mehrere Gläser für verschiedene Protokolle sind in Mail API verfügbar. EX: dsn.jar, gimap.jar, imap.jar, mailapi.jar, pop3.jar, smtp.jar

    
nimesh makwana 22.09.2014 06:14
quelle
1

JavaMail fragt den ClassLoader nach der Konfigurationsdatei, die die Protokollanbieter konfiguriert. Wenn der ClassLoader nicht korrekt funktioniert, kann JavaMail die Konfigurationsdatei nicht finden. Es gibt eine Inkompatibilität zwischen der Arbeitsweise der OSGi ClassLoader und der von JavaMail erwarteten, was zu diesem Problem führen kann. Wenn Sie Ihre Anwendung in Eclipse selbst ausführen, könnte dies das Problem erklären. Eine weitere häufige Ursache für dieses Problem ist, dass Sie die Datei mail.jar so in Ihr Projekt importieren, dass die Klassendateien aus der JAR-Datei extrahiert und in Ihre Anwendung aufgenommen werden, die Konfigurationsdateien jedoch zurückgelassen werden.

Versuchen Sie, Ihr Programm über die Befehlszeile mit dem Befehl "java" und mit der Datei mail.jar in Ihrem CLASSPATH auszuführen.

    
Bill Shannon 31.05.2013 20:20
quelle
0

probiere

aus %Vor%     
0day 15.10.2013 19:03
quelle
0

zum Wohle anderer mit einem ähnlichen Problem wie ich.

vergesst nicht,

einzustellen %Vor%

statt

%Vor%     
mahesh madhusudanan 11.04.2016 10:02
quelle
0

Ich hatte mail.jar und activation.jar in tomcat's lib-Verzeichnis und mailapi.jar im lib-Verzeichnis der Anwendung. Anwendung las mailapi.jar während der Laufzeit, da mailapi.jar leichte Version der Mailing-API ist und es smtp.jar benötigt, warum die Anwendung smtp exception warf. Also, wenn Sie diese Ausnahme loswerden wollen,

Bitte lösen Sie den Konflikt zwischen mail.jar und mailapi.jar durch:

  • Entfernen von mailapi.jar (wenn es im Klassenpfad vorhanden ist).
  • ODER halt einfach ein Paar mailapi.jar und smtp.jar im Klassenpfad und entferne
    mail.jar.
  • ODER behalten Sie nur ein Paar mail.jar und activation.jar in der Klassenpfad (sauberer Ansatz).

(Zu Ihrer Information: Ich habe das Dateisystem durchsucht, um E-Mail-bezogene JAR-Dateien ausfindig zu machen und habe erfahren, dass ich im folgenden Pfad (im Klassenpfad hinzugefügt) eine in Konflikt stehende JAR-Datei hat: C: \ workspace.metadata.plugins \ org.eclipse .wst.server.core \ tmp0 \ wtpwebapps \ testapp \ WEB-INF \ lib)

    
Sumit Sundriyal 09.03.2018 17:23
quelle

Tags und Links