E-Mail-Versand in Java: Überblick über Bibliotheken und Codebeispiele
Das Versenden von E-Mails ist eine grundlegende Aufgabe in Unternehmens- und Webanwendungen. Im Java-Ökosystem gibt es mehrere bewährte Werkzeuge für die Arbeit mit dem SMTP-Protokoll. In diesem Artikel betrachten wir zwei Hauptbibliotheken: die standardmäßige JavaMail (Jakarta Mail) und die modernere Simple Java Mail. Sie erfahren, wie Sie eine Verbindung zu einem SMTP-Server konfigurieren, eine einfache E-Mail senden, HTML-Markup und Anhänge hinzufügen.
1. Jakarta Mail (früher JavaMail API)
Jakarta Mail (früherer Name – JavaMail API) ist die offizielle Spezifikation für die Arbeit mit E-Mails in Java. Sie ist Teil von Jakarta EE und kann in beliebigen Java-Projekten verwendet werden. Für die Verbindung zu einem SMTP-Server müssen Abhängigkeiten in pom.xml (Maven) oder build.gradle (Gradle) hinzugefügt werden.
Abhängigkeit einbinden (Maven)
<dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.2</version></dependency>Beispiel: Senden einer einfachen Text-E-Mail
import javax.mail.*;import javax.mail.internet.*;import java.util.Properties;
public class EmailSender { public static void main(String[] args) { final String username = "your-email@gmail.com"; final String password = "your-app-password";
Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587");
Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } });
try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress(username)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com")); message.setSubject("Test-E-Mail von Java"); message.setText("Hallo! Diese E-Mail wurde mit der JavaMail API gesendet.");
Transport.send(message); System.out.println("E-Mail erfolgreich gesendet!"); } catch (MessagingException e) { e.printStackTrace(); } }}- Properties – SMTP-Einstellungen: Host, Port, Authentifizierung, TLS.
- Session – Sitzung mit dem Server, wird mit einem Authentifikator erstellt.
- MimeMessage – E-Mail-Objekt, in dem Absender, Empfänger, Betreff und Inhalt festgelegt werden.
- Transport.send() – Senden der E-Mail über SMTP.
Senden einer HTML-E-Mail mit Anhang
import javax.mail.*;import javax.mail.internet.*;import javax.activation.*;
public class HtmlEmailWithAttachment { public static void main(String[] args) throws Exception { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587");
Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("your-email@gmail.com", "your-password"); } });
MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("your-