lors de l'envoi du courrier, j'obtiens cette erreur
Java.lang.RuntimeException: javax.mail.SendFailedException: Envoi échoué; L'exception imbriquée est la suivante: class javax.mail.MessagingException: Impossible de se connecter à l'hôte SMTP: smtp.gmail.com, port: 465, réponse: -1
mon code est:
Properties props = new Properties();
props.put("mail.smtp.Host", "smtp.gmail.com");
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("email","password");
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("email"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(this.to));
message.setSubject("Testing");
message.setText("Hey, this is the testing email.");
Transport.send(message);
Toute aide serait appréciée.
Merci d'avance.
Vous devez lui dire que vous utilisez SSL:
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
Si vous manquez quelque chose, voici le code qui fonctionne:
String d_email = "[email protected]",
d_uname = "Name",
d_password = "urpassword",
d_Host = "smtp.gmail.com",
d_port = "465",
m_to = "[email protected]",
m_subject = "Indoors Readable File: " + params[0].getName(),
m_text = "This message is from Indoor Positioning App. Required file(s) are attached.";
Properties props = new Properties();
props.put("mail.smtp.user", d_email);
props.put("mail.smtp.Host", d_Host);
props.put("mail.smtp.port", d_port);
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.debug", "true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.socketFactory.port", d_port);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
SMTPAuthenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth);
session.setDebug(true);
MimeMessage msg = new MimeMessage(session);
try {
msg.setSubject(m_subject);
msg.setFrom(new InternetAddress(d_email));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(m_to));
Transport transport = session.getTransport("smtps");
transport.connect(d_Host, Integer.valueOf(d_port), d_uname, d_password);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
} catch (AddressException e) {
e.printStackTrace();
return false;
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
J'ai rencontré ce problème lors du débogage à l'aide de NetBeans, même lors de l'exécution du fichier JAR réel. Antivirus bloquerait l'envoi de courrier électronique. Vous devez désactiver temporairement votre antivirus pendant le débogage ou exclure NetBeans et le fichier JAR de l'analyse. Dans mon cas, j'utilise Avast.
Voir ce lien sur la façon d'exclure: Comment ajouter une exception de fichier/site Web dans avast! Antivirus 2014
Ça marche pour moi.
Ce que j'ai fait était commenté le
props.put("mail.smtp.starttls.enable","true");
Parce qu'apparemment pour G-mail, vous n'en aviez pas besoin. Ensuite, si vous ne l'avez pas déjà fait, vous devez créer un mot de passe pour l'application dans G-mail pour votre programme. Je l'ai fait et cela a fonctionné parfaitement. Ici ce lien vous montrera comment: https://support.google.com/accounts/answer/185833 .
Dans mon cas, Avast Antivirus interférait avec la connexion . Actions pour désactiver cette fonction: .
Le port 465 est pour "smtp over SSL".
http://javamail.kenai.com/nonav/javadocs/com/Sun/mail/smtp/package-summary.html
[...] For example, use
props.put("mail.smtp.port", "888");
to set the mail.smtp.port property, which is of type int.
Note that if you're using the "smtps" protocol to access SMTP over SSL,
all the properties would be named "mail.smtps.*"