javax.E-mail.AuthenticationFailedException: Fehler beim herstellen einer Verbindung kein Kennwort angegeben?
Dieses Programm versucht eine e-mail schicken, aber wirft eine Laufzeit-exception:
javax.mail.AuthenticationFailedException: failed to connect, no password specified?
Warum bin ich immer diese exception, wenn ich die geliefert haben, die den korrekten Benutzernamen und das Kennwort für die Authentifizierung?
Sowohl der Absender und Empfänger haben g-mail-Konten. Der Absender und der Empfänger beide haben g-mail-Konten. Der Absender hat 2-Schritt-überprüfung deaktiviert.
Dies ist der code:
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
class tester {
public static void main(String args[]) {
Properties props = new Properties();
props.put("mail.smtp.host" , "smtp.gmail.com");
props.put("mail.stmp.user" , "username");
//To use TLS
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.password", "password");
//To use SSL
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance( props , null);
String to = "[email protected]";
String from = "[email protected]";
String subject = "Testing...";
Message msg = new MimeMessage(session);
try {
msg.setFrom(new InternetAddress(from));
msg.setRecipient(Message.RecipientType.TO,
new InternetAddress(to));
msg.setSubject(subject);
msg.setText("Working fine..!");
Transport transport = session.getTransport("smtp");
transport.connect("smtp.gmail.com" , 465 , "username", "password");
transport.send(msg);
System.out.println("fine!!");
}
catch(Exception exc) {
System.out.println(exc);
}
}
}
Sogar nach der Vergabe des Passwortes bekomme ich die exception. Warum ist es nicht authentifizieren?
InformationsquelleAutor Suhail Gupta | 2011-07-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, erstellen Sie eine javax.E-mail.Authenticator-Objekt, und lege Sie in den Eigenschaften-Objekt an die Session-Objekt.
Authenticator
edit:
Können Sie ändern, diese zu akzeptieren, einen Benutzernamen und ein Passwort und speichern Sie Sie dort, oder wo immer Sie wollen.
In Ihre Klasse, wo Sie die E-Mail senden:
Gupta, machte ich einen Fehler, den ich bearbeitet meine Antwort
Gupta, hat es funktioniert?
Nein, ich bekomme Fehler beim ausführen der code
Ich Laufe in den selben Fehler und das es gelöst, aber warum? Warum funktioniert die Authentifizierung funktioniert nur, wenn du die Session-Instanz mit authenticator und nicht bei der Verbindung mit dem Transport, als die user/pass ist natürlich das gute.
InformationsquelleAutor RMT
Müssen Sie das Objekt hinzufügen, das die Authentifizierung als Parameter an die Sitzung. wie
jetzt werden Sie nicht bekommen, diese Art von Ausnahme....
InformationsquelleAutor Sowmya Vallam
Ihre E-Mail-Sitzung sollte vorgesehen werden, eine authenticator-Instanz als unten
ein vollständiges Beispiel ist hier http://bharatonjava.wordpress.com/2012/08/27/sending-email-using-java-mail-api/
InformationsquelleAutor Bharat Sharma
Neben RMT Antwort. Ich hatte auch den code ändern ein bisschen.
hier ist mein Beispiel send () - Methoden. Das config-Objekt ist nur eine dumme Datencontainer.
InformationsquelleAutor Kenny Cason
Habe ich dieses Problem gelöst hinzufügen von Benutzer und Passwort in
Transport.send
nennen:Gemäß dieser Signatur des
senden
- Funktion in javax.E-mail (von version 1.5):public static void send(Message msg, String user, String password)
Auch wenn Sie mit dieser Unterschrift ist es nicht erforderlich, jede
Authenticator
, und legen Benutzer und Passwort in dieProperties
(nur der host benötigt wird). So könnte der code sein:InformationsquelleAutor T30
Könnte es sich lohnen, zu überprüfen, dass die Google Mail-Konto noch nicht gesperrt wurden aufgrund von mehreren fehlgeschlagenen login-versuche, können Sie Ihr Passwort zurücksetzen müssen. Ich hatte das gleiche problem wie du, und es stellte sich heraus die Lösung zu sein.
InformationsquelleAutor Andrew Calder
Ich habe auch dieses problem, also keine Sorge. Es kommt von einem mail-server-Seite durch einen externen Authentifizierungs-Problem. Öffnen Sie Ihre mail, und Sie erhalten eine E-mail von dem mail-server sagen, Sie Eingabehilfen aktivieren. Wenn Sie das getan haben, wiederholen Sie Ihr Programm.
InformationsquelleAutor user4083502
InformationsquelleAutor Vishal Nawale
Selbst wenn ein Authenticator-ich hatte zum festlegen der E-mail.smtp.auth-Eigenschaft auf true. Hier ist ein funktionierendes Beispiel:
InformationsquelleAutor alecswan
Aktivieren Sie "Zugriff für weniger sichere apps" in Sicherheit Einstellung für die Google Mail-Konto.(aus der mail) finden Sie unter dem folgenden link für Verweise
http://www.ghacks.net/2014/07/21/gmail-starts-block-less-secure-apps-enable-access/
InformationsquelleAutor Prabha
Dieser Fehler kann über sein Passwort Zeichen. Wenn Ihr Passwort Sonderzeichen enthält und auch fügen Sie Ihr Passwort in
Transport
Klasse Methoden;Beispielsweise
oder
erhalten Sie möglicherweise den Fehler zu finden. Da
Transport
- class " - Methoden können nicht mit Sonderzeichen. Wenn Sie fügen Sie Ihren Benutzernamen und Ihr Passwort in die Nachricht mitjavax.mail.PasswordAuthentication
Klasse, ich hoffe, Sie werden entkommen, dass Fehler;Beispielsweise
InformationsquelleAutor oguzhan
Sehen Sie die 9-Zeile in Ihrem code,kann es ein Fehler sein; es sollte sein:
nicht
InformationsquelleAutor bymysidel
Habe ich nur konfrontiert mit diesem problem, und die Lösung ist, dass die Eigenschaft "E-mail.smtp.user" sollte Ihre E-Mail (nicht der Benutzername).
Beispiel für gmail-Nutzer:
InformationsquelleAutor user2618037