JavaMail (Jakarta Mail) für Java: Komplettguide mit Beispielen

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

JavaMail (Jakarta Mail) für Java: Komplettguide mit Beispielen

JavaMail (heute Jakarta Mail) ist die Standard-Java-Bibliothek zum Senden, Empfangen und Verarbeiten von E-Mails. Sie bietet eine leistungsstarke und flexible API für die Arbeit mit den Protokollen SMTP, POP3 und IMAP und ermöglicht Entwicklern, E-Mail-Funktionen nahtlos in ihre Anwendungen zu integrieren. Die Bibliothek ist Teil der Jakarta-EE-Plattform (ehemals Java EE) und wird aktiv von der Eclipse Foundation unterstützt.

Warum braucht man JavaMail? In der modernen Entwicklung benötigt fast jede Unternehmensanwendung Funktionen wie das Versenden von Benachrichtigungen, Registrierungsbestätigungen, Passwort-Zurücksetzungen oder das Verteilen von Berichten. JavaMail ermöglicht dies programmatisch, ohne auf externe Dienste oder manuelle Prozesse angewiesen zu sein. Die Bibliothek unterstützt MIME-Typen, Anhänge, HTML-E-Mails, Multithreading-Versand und Verschlüsselung (SSL/TLS).

Zu den wichtigsten Funktionen gehören: E-Mail-Versand über SMTP-Server (Gmail, Outlook, eigener Server), E-Mail-Abruf über POP3/IMAP, Verarbeitung von Anhängen (Bilder, PDFs, Archive), Unterstützung von Multipart-Nachrichten, Verwaltung von Flags (gelesen, gelöscht) und vollständige Konfiguration der Verbindung über Properties.

Installation

JavaMail (Jakarta Mail) wird über Maven Central bereitgestellt. Fügen Sie die entsprechende Abhängigkeit in Ihre pom.xml (Maven) oder build.gradle (Gradle) ein.

Maven

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>

Für Jakarta Mail (neuere Version, ab Jakarta EE 9):

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>jakarta.mail</artifactId>
    <version>2.0.1</version>
</dependency>

Gradle

implementation 'com.sun.mail:javax.mail:1.6.2'
// Oder für Jakarta Mail:
implementation 'com.sun.mail:jakarta.mail:2.0.1'

Wenn Sie Java 9+ mit dem Modulsystem verwenden, fügen Sie in module-info.java hinzu:

requires java.mail;

Schnellstart – Minimales funktionsfähiges Beispiel

Versenden einer einfachen Text-E-Mail über den Gmail-SMTP-Server (dafür muss der "Zugriff für weniger sichere Apps" aktiviert oder ein App-Passwort verwendet werden).

import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class QuickStart {
    public static void main(String[] args) {
        // SMTP-Einstellungen
        Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");

        // Authentifizierung
        Session session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("your-email@gmail.com", "your-password");
            }
        });

        try {
            // E-Mail erstellen
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("your-email@gmail.com"));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com"));
            message.setSubject("Test-E-Mail aus Java");
            message.setText("Hallo! Dies ist eine Testnachricht.");

            // Senden
            Transport.send(message);
            System.out.println("E-Mail erfolgreich gesendet!");

        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

Wichtige Methoden/Funktionen/Klassen

1. Session.getInstance(Properties, Authenti

Empfehlungen