E-Mails in Java verschicken: Es gibt mehr als eine Möglichkeit

Mit den Abstraktionen hat Javamail eine Address-Klasse, aus der andere Adress-Typen abgeleitet werden. Es geht hier aber nur um das Versenden von Internet-E-Mails, also muss man eine InternetAddress erzeugen, die die E-Mail-Adresse nimmt, von der die Mail kommen soll, und einen ‚persönlichen‘ Namen für die Anzeige. Jetzt muss noch angegeben werden, wohin die Mail gehen soll.

message.setRecipient(Message.RecipientType.TO,
new InternetAddress(MailSettings.toAddress));

Diese Abstraktion der Adressierung spielt auch hier eine Rolle; man legt einen Empfänger und die Art des Empfängers fest. Ab hier ist alles ganz einfach, zumindest, wenn es sich um Plaintext-E-Mails handelt. Man muss nur einen Betreff und einen Text in der Nachricht angeben und die Mail mit einem Zeitstempel versehen.

message.setSubject(MailSettings.messageSubject);
message.setText(MailSettings.messageBody1);
message.setSentDate(new Date());

Jetzt kann die Nachricht abgeschickt werden:

Transport.send(message);

Dieser Aufruf der Transport-Klasse sorgt dafür, dass die richtige Session gesucht und herausgefunden wird, wie die Nachricht verschickt werden muss, auch wenn das etwas konterintuitiv wirkt. Wenn das erledigt ist, ist die Mail verschickt. Man muss noch etwas Code ergänzen, um die Ausnahmen abzufangen, die Javamail ausgeben kann, AddressException, MessagingException und UnsupportedEncodingException. Dies ist allerdings der einfachste Javamail-Versand.

Wie sieht es aus, wenn man das Gleiche mit dem Apache Commons E-Mail-Paket (siehe MailCommons.java) macht? Commons E-Mail hat eine Reihe von Klassen, die darauf basieren, welche Art Mail man schicken möchte. Die einfachste ist die SimpleEmail-Klasse. Man muss keine Sessions oder Eigenschaften-Listen einrichten:

SimpleEmail email=new SimpleEmail();
email.setHostName(MailSettings.smtpHost);

Dies erzeugt die Mail und sagt ihr, dass sie über den angegebenen SMTP-Server verschickt werden soll. Weil Commons E-Mail nur Internet-E-Mail beherrscht, muss man sich auch nicht mit dem Erzeugen von InternetAddress abmühen. Man kann die Adresse des Absenders einfach wie folgt setzen:

email.setFrom(MailSettings.fromAddress,
MailSettings.fromName);

Statt Empfänger-Typen anzugeben, muss man lediglich eine Adresse in die Liste einfügen:

email.addTo(MailSettings.toAddress);

Es ist ebenso einfach, den Betreff und den Text der Nachricht zu setzen.

email.setSubject(MailSettings.messageSubject);
email.setMsg(MailSettings.messageBody1);
email.send();

Und alles, was man als mögliche Ausnahme abfangen muss, ist EmailException. Man sollte also einsehen können, dass die Sache erheblich einfacher und leichter zu lesen sein wird, wenn man das System und das Session-Management versteckt.

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

Chrome 131 schließt zwölf Sicherheitslücken

Eine schwerwiegende Anfälligkeit hebelt die Sicherheitsfunktion Seitenisolierung auf. Betroffen sind Chrome für Windows, macOS und…

2 Tagen ago

DeepL Voice mit KI für Sprach- übersetzungen

DeepL Voice ermöglicht Live‑Übersetzung von Meetings und Gesprächen in 13 Sprachen.

2 Tagen ago

November-Patchday: Microsoft schließt Zero-Day-Lücken in Windows

Betroffen sind Windows und Windows Server. Microsoft patcht aber auch Schwachstellen in Excel, Word und…

2 Tagen ago

LG zeigt elastisches OLED-Display

Es lässt sich um bis zu 50 Prozent dehnen. Allerdings besitzt es eine deutliche geringere…

3 Tagen ago

BSI zu Cybersicherheit: Bedrohungslage bleibt angespannt

Allerdings nimmt auch die Resilienz gegenüber Cyberattacken zu. Das BSI hat außerdem die Cybersicherheit anstehender…

3 Tagen ago

IT-Ausgaben in Europa steigen 2025 voraussichtlich um 8,7 Prozent

Es ist das größte Wachstum in einem Jahr seit 2021. Unter anderem lässt das Interesse…

3 Tagen ago