E-Mail-Versand in Java: Bibliotheken JavaMail und Simple Java Mail

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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-

Empfehlungen