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.
Neueste Kommentare
Noch keine Kommentare zu E-Mails in Java verschicken: Es gibt mehr als eine Möglichkeit
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.