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
Auch in der Bibliothek
JSON-Verarbeitung in Java: Die Bibliotheken Jackson und Gson für die Datenarbeit
Arbeit mit YAML in Java: Bibliotheken SnakeYAML und Jackson
Arbeiten mit Markdown in C# (.NET): Bibliotheken und Beispiele
Konfiguration von C++-Anwendungen: Bibliotheken und Ansätze