E-Mail-Versand in Java: Die Bibliothek Jakarta Mail (JavaMail)
In Java wird der E-Mail-Versand traditionell über eine leistungsstarke und flexible API realisiert – JavaMail. Nach dem Übergang von Java EE zur Eclipse Foundation erhielt die Bibliothek einen neuen Namen – Jakarta Mail (für Jakarta EE 9+) und das aktuelle Paket jakarta.mail. In dieser Anleitung sehen wir, wie man Jakarta Mail (oder das klassische JavaMail) für den E-Mail-Versand über einen SMTP-Server konfiguriert und verwendet.
Was ist Jakarta Mail (JavaMail)?
Jakarta Mail ist ein plattformunabhängiges Framework zur Erstellung von E-Mail-Clients. Es bietet eine Reihe von Abstraktionen für die Arbeit mit den Protokollen SMTP, POP3 und IMAP. Für den E-Mail-Versand interessiert uns das SMTP-Protokoll. Die Bibliothek unterstützt:
- Versand einfacher Textnachrichten (
text/plain). - Versand von HTML-E-Mails mit Anhängen (
multipart/mixed). - Arbeit mit SSL/TLS-Verschlüsselung (SMTPS).
- Authentifizierung am Mail-Server.
Installation und Einbindung
Für die Arbeit mit Jakarta Mail müssen Sie eine Abhängigkeit zu Ihrem Projekt hinzufügen. Wenn Sie Maven verwenden, fügen Sie in pom.xml hinzu:
<dependency> <groupId>com.sun.mail</groupId> <artifactId>jakarta.mail</artifactId> <version>2.0.1</version></dependency>Für das klassische JavaMail (Paket javax.mail) verwenden Sie:
<dependency> <groupId>javax.mail</groupId> <artifactId>javax.mail-api</artifactId> <version>1.6.2</version></dependency>Außerdem wird eine Implementierung benötigt (normalerweise com.sun.mail:javax.mail:1.6.2).
Basisversand einer Text-E-Mail
Betrachten wir ein minimales Beispiel für den E-Mail-Versand über einen Gmail-SMTP-Server (oder einen anderen). Erstellen Sie zunächst ein Properties-Objekt mit den SMTP-Einstellungen:
import java.util.Properties;import jakarta.mail.*;import jakarta.mail.internet.InternetAddress;import jakarta.mail.internet.MimeMessage;
public class EmailSender { public static void main(String[] args) { // SMTP-Server-Einstellungen (z.B. Gmail) 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"); // TLS
// Authentifizierung String username = "your-email@gmail.com"; String password = "your-app-password"; // Verwenden Sie ein App-Passwort!
// Session erstellen Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } });
try { // E-Mail erstellen Message message = new MimeMessage(session); message.setFrom(new InternetAddress(username)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com")); message.setSubject("Hallo aus Java!"); message.setText("Dies ist eine Testnachricht, gesendet mit Jakarta Mail.");
// Senden Transport.send(message); System.out.println("E-Mail erfolgreich gesendet!"); } catch (MessagingException e) { e.printStackTrace(); } }}Wichtig: Verwenden Sie für Gmail ein App-Passwort, nicht Ihr Hauptpasswort. Für andere Server (Yandex, Mail.ru) können die Port- und Host-Einstellungen abweichen.
Auch in der Bibliothek
Verwaltung der Konfiguration von TypeScript-Anwendungen: Vollständiger Leitfaden
Redis (ioredis) für JavaScript (Node.js): Komplettguide mit Beispielen
Arbeiten mit Excel in PHP: Bibliotheken PhpSpreadsheet und OpenSpout