Ich habe auf SO mehrere andere Fragen zur JavaMail-API und zum Versand von E-Mails über einen SMTP-Server gefunden, aber in keiner davon wurde die Verwendung von TLS-Sicherheit diskutiert. Ich versuche, JavaMail zu verwenden, um Status-Updates an mich selbst über meinen SMTP-Mailserver auf der Arbeit zu senden, aber das erfordert TLS, und ich kann online keine Beispiele dafür finden, wie man JavaMail verwendet, um auf einen SMTP-Server zuzugreifen, der TLS-Verschlüsselung erfordert. Kann mir jemand dabei helfen?
Antworten
Zu viele Anzeigen?Mit Simple Java Mail 5.0.0 (simplejavamail.org) ist es sehr einfach und die Bibliothek kümmert sich um alle Session-Eigenschaften für Sie.
Hier ist ein Beispiel, das die SMTP-Server von Google verwendet:
Email email = EmailBuilder.startingBlank()
.from("lollypop", "lol.pop@somemail.com")
.to("C.Cane", "candycane@candyshop.org")
.withSubject("hey")
.withPlainText("We should meet up!")
.withHTMLText("<b>We should meet up!</b>")
.buildEmail();
MailerBuilder.withSMTPServer("smtp.gmail.com", 25, "user", "pass", SMTP_TLS)
.buildMailer()
.sendMail(email);
MailerBuilder.withSMTPServer("smtp.gmail.com", 587, "user", "pass", SMTP_TLS)
.buildMailer()
.sendMail(email);
MailerBuilder.withSMTPServer("smtp.gmail.com", 465, "user", "pass", SMTP_SSL)
.buildMailer()
.sendMail(email);
Wenn Sie die Zwei-Faktor-Anmeldung aktiviert haben, müssen Sie eine anwendungsspezifisches Passwort über Ihr Google-Konto.
Als kleine Anmerkung: Bei mir funktionierte es erst, als ich in den obigen Beispielen smtp in smtps änderte (siehe smtpsend.java), https://github.com/javaee/javamail/releases/download/JAVAMAIL-1_6_2/javamail-samples.zip , Option -S).
Mein daraus resultierender Code sieht wie folgt aus:
Properties props=new Properties();
props.put("mail.smtps.starttls.enable","true");
// Use the following if you need SSL
props.put("mail.smtps.socketFactory.port", port);
props.put("mail.smtps.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtps.socketFactory.fallback", "false");
props.put("mail.smtps.host", serverList.get(randNum));
Session session = Session.getDefaultInstance(props);
smtpConnectionPool = new SmtpConnectionPool(
SmtpConnectionFactories.newSmtpFactory(session));
final ClosableSmtpConnection transport = smtpConnectionPool.borrowObject();
...
transport.sendMessage(message, message.getAllRecipients());
- See previous answers
- Weitere Antworten anzeigen