E-Mail-Versand implementieren: Wie Javamail funktioniert

Die Javamail-API ist ein Messaging-Framework zur Entwicklung plattformunabhängiger Anwendungen, die E-Mails versenden und empfangen. Dieser Artikel erklärt die Javamail-API und zeigt Anwendungsbeispiele sowie spezielle Optionen.

Die Javamail-API ist in die J2EE-Plattform integriert und als optionales Paket in J2SE verfügbar. Der Hauptzweck der API besteht nicht in der Übermittlung, Zustellung und Weiterleitung von Nachrichten, sondern vielmehr in der Bereitstellung eines protokollunabhängigen Zugangs zu Mail-Infrastrukturen für den Versand und den Empfang von Nachrichten.

Überblick

Die Javamail-API ist in zwei Bereiche aufgeteilt:

  • Der erste Teil der API ist auf den Versand und Empfang von Nachrichten ausgerichtet (unabhängig vom Protokoll).
  • Der zweite Teil implementiert protokollspezifische Sprachen wie SMTP, POP, IMAP und NNTP. Um die Kommunikation der Javamail-API mit einem Server zu ermöglichen, ist ein Provider für ein Protokoll erforderlich.

Hinweis: Das Erstellen protokollspezifischer Provider wird in diesem Artikel nicht erläutert, aber Sun bietet kostenlos eine ausreichende Auswahl an Providern, zumindest SMTP, POP und IMAP, was zum Senden und Empfangen standardmäßiger E-Mail-Nachrichten über eine herkömmliche Internet-Infrastruktur mehr als ausreichend ist.

Alle Versionen der Javamail-API benötigen das Javabeans Activation Framework, das eine Unterstützung der Eingabe und Handhabung beliebiger Datenblöcke mitbringt. Javamail verwendet die Implementierung Multipurpose Internet Mail Extensions (MIME) aus diesem Framework. Die MIME-Implementierung definiert den in einer E-Mail übermittelten Inhalt: das Format von Nachrichten, Anhängen und so weiter. Um Javamail problemlos benutzen zu können, muss eine Anwendung classpathmail.jar und activation.jar enthalten. Wer mit der J2EE arbeitet, muss gar nichts tun, um die grundlegende Javamail-API nutzen zu können - sie ist in den J2EE-Klassen enthalten.

2006 wurde Javamail zu Open Source, weshalb der Quellcode für die Javamail-API-Referenzimplementation jetzt, im Rahmen des Glassfish-Projekts, unter der Open-Source-Lizenz erhältlich ist.

Klassen

Es folgt eine Übersicht der wichtigsten Klassen, die in Javamail-Anwendungen zum Einsatz kommen:

  • javax.mail.Session: Damit wird der Zugang zu den Implementierungen der anderen Mail-Klassen kontrolliert, welche die von dem Mail-System bereitgestellten Dienste darstellen, zum Beispiel javax.mail.Store. (Nicht zu verwechseln mit javax.servlet.http.HttpSession.)
  • javax.mail.Transport: Wird für den Versand von Mail-Nachrichten über ein bestimmtes Protokoll wie SMTP benutzt, je nachdem, welches Protokoll der Service Provider implementiert hat.
  • javax.mail.Store: Diese Klasse wird vom Service Provider implementiert. Die Klasse ermöglicht den Zugang zu Lese-, Schreib-, Überwachungs- und Suchfunktionen für ein bestimmtes Mail-Protokoll wie POP3 oder IMAP4. Über sie kann auch ein Verweis auf die Klasse javax.mail.Folder erlangt werden.
  • javax.mail.Folder: Sie liefert einen hierarchisch aufgebauten Überblick über die javax.mail.Message-Objekte und ermöglicht den Zugang zu bestimmten Nachrichten für Lese-, Lösch- und Antwort-Vorgänge.
  • javax.mail.internet.MimeMessage: Diese Klasse stellt die eigentliche Mail-Nachricht dar. Sie enthält bei der ersten Instantiierung sehr wenige Informationen und Daten über die Nachricht. Wenn dann nachfolgende Methoden mehr Daten über die Nachricht sammeln, wird diese Klasse zur Speicherung der Daten verwendet.
  • javax.mail.internet.InternetAddress: Sie stellt eine RFC822-E-Mail-Adresse (Internet-Standard) dar, das heißt eine Adresse der Form peter@mikhalenko.ru. Wird ein nicht korrektes Format festgestellt, tritt ein Fehler auf, und eine AddressException wird innerhalb der Java-Methode ausgegeben, welche die E-Mail-Adresse verarbeitet.

Fanden Sie diesen Artikel nützlich?
11 von 16 Lesern fanden diesen Artikel nützlich.

Aktuelle Job-Angebote

Lesermeinungen zum Artikel

 
von Philipp K.
am 20. Januar 2010, 14:06 Uhr
Danke für das kleine tutorial
In den Text & Code beispielen wird gut beschrieben was wann nötig ist und was für Möglichkeiten es alles gibt um eine Mail mit oder ohne Anhang und weiteren Informationen zu versenden.

Vielen Dank Philipp

ZDNet.de Live

UL, ...

UL, Drexel University partner to establish research hub t.co/...

10.02.12, 22:15 von ZDNet
wow! ...

wow! ein wirklich schickes Android, das nicht Tablet-Größe hat: t.co/... ... leider nur mäßige technische Daten.

10.02.12, 21:25 von coke4all
Googl ...

Google arbeitet angeblich an Home Entertainment System mit Cloudanbindung t.co/...

10.02.12, 21:10 von zdnet_de
Why ...

Why are young Japanese men losing interest in sex? t.co/...

10.02.12, 20:55 von ZDNet
What ...

What AMD's new roadmap means for users t.co/...

10.02.12, 20:40 von ZDNet
Manch ...

Manchester City is expanding its online reach to Japan t.co/...

10.02.12, 20:35 von ZDNet
Fours ...

Foursquare evolving into one-stop shop with NFC support t.co/...

10.02.12, 20:35 von ZDNet
Websi ...

Website der Gelben Seiten baut Bewertungsfunktionen aus t.co/...

10.02.12, 20:30 von zdnet_de
Motor ...

Motorola: Android-Updates verzögern sich wegen der Hardware-Vielfalt t.co/...

10.02.12, 20:00 von zdnet_de
Aktie ...

Aktienkurse dort wo man sie am liebsten sieht: auf dem Mülleimer! t.co/...

10.02.12, 19:50 von coke4all
Faceb ...

Facebook details Zuckerberg's $500,000 salary, 45% bonus t.co/...

10.02.12, 19:45 von ZDNet
New ...

New Microsoft Office University product comes with tougher verification rules t.co/...

10.02.12, 19:35 von ZDNet
#Prad ...

#Prada Phone by #LG 3.0 ausgepackt und ausprobiert - #smartphone #android t.co/...

10.02.12, 19:30 von cnet_de
Schon ...

Schon im Test: Prada Phone by LG 3.0 mit Android und superhellem Display t.co/...

10.02.12, 19:30 von cnet_de
Beta ...

Beta von Chrome 18 erweitert Hardwarebeschleunigung t.co/...

10.02.12, 19:30 von zdnet_de
Sage ...

Sage helps chocolate business manage seasonality t.co/...

10.02.12, 19:20 von ZDNet
Colum ...

Columbia University excludes Google Docs t.co/...

10.02.12, 19:20 von ZDNet
Benq ...

Benq bringt XGA-Projektor mit 4000 ANSI-Lumen t.co/...

10.02.12, 19:00 von zdnet_de
Germa ...

Germany postpones ACTA signing in wake of protests t.co/...

10.02.12, 18:45 von ZDNet