E-Mail-Versand in Java mit Jakarta Mail (JavaMail)
Der Versand von E-Mails ist eine der häufigsten Aufgaben in Java-Unternehmensanwendungen: Benutzerregistrierung, Benachrichtigungen, Passwort-Wiederherstellung und Marketing-Kampagnen. Lange Zeit war die Bibliothek JavaMail der De-facto-Standard, aber nach dem Übergang von Java EE zur Eclipse Foundation wurde sie in Jakarta Mail umbenannt. In diesem Leitfaden werden wir im Detail besprechen, wie man Jakarta Mail für den E-Mail-Versand in Java einrichtet und verwendet.
Was ist Jakarta Mail?
Jakarta Mail (früher JavaMail) ist eine API zum Senden, Empfangen und Verarbeiten von E-Mails in Java-Anwendungen. Die Bibliothek unterstützt die Protokolle SMTP, POP3 und IMAP sowie den MIME-Standard, sodass sowohl einfache Text-E-Mails als auch Nachrichten mit Anhängen, HTML-Markup und Bildern versendet werden können.
Installation und Einbindung von Abhängigkeiten
Um mit Jakarta Mail zu arbeiten, müssen Sie Ihrem Projekt eine Abhängigkeit 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 Gradle:
implementation 'com.sun.mail:jakarta.mail:2.0.1'Wichtig: Wenn Sie Java 8 oder älter verwenden, stellen Sie sicher, dass die Jakarta Mail-Version kompatibel ist – für Java 8 ist Version 1.6.x geeignet (z. B. javax.mail:javax.mail-api:1.6.2).
Basis-E-Mail-Versand in Java
Betrachten wir das einfachste Beispiel – den Versand einer Text-E-Mail über den Gmail-SMTP-Server. Dazu benötigen Sie:
- Ein Gmail-Konto (oder ein anderes E-Mail-Konto)
- Ein App-Passwort (falls die Zwei-Faktor-Authentifizierung aktiviert ist)
- Zugriff auf weniger sichere Apps (falls erforderlich)
Der Code zum Versand:
import jakarta.mail.*;import jakarta.mail.internet.*;import java.util.Properties;
public class EmailSender { public static void main(String[] args) { // 1. Verbindungseigenschaften konfigurieren 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");
// 2. Authentifizierung Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("your-email@gmail.com", "your-app-password"); } });
try { // 3. E-Mail erstellen Message message = new MimeMessage(session); message.setFrom(new InternetAddress("from-email@gmail.com")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com")); message.setSubject("Test-E-Mail aus Java"); message.setText("Hallo! Diese E-Mail wurde mit Jakarta Mail gesendet.");
// 4. Versand Transport.send(message); System.out.println("E-Mail erfolgreich gesendet!"); } catch (MessagingException e) { e.printStackTrace(); } }}Versand von HTML-E-Mails und E-Mails mit Anhängen
Häufig ist es erforderlich, eine formatierte E-Mail (HTML) zu senden oder eine Datei anzuhängen. Dazu werden MimeMultipart und MimeBodyPart verwendet.
HTML-E-Mail
MimeBodyPart htmlPart = new MimeBodyPart();htmlPart.setContent("<h1>Hallo!</h1><p>Dies ist eine HTML-E-Mail aus Java.</p>", "text/html; charset=utf-8");
Multipart mu Auch in der Bibliothek
Redis-Client für Node.js: ioredis – ein leistungsstarkes Tool für die Arbeit mit Redis
WebSocket-Bibliotheken für Rust: Tokio-tungstenite und async-tungstenite für Echtzeit