Senden von E-Mails mit Java

1. Übersicht

In diesem kurzen Tutorial werden wir uns mit dem Senden einer E-Mail mit und ohne Anhänge befassen - unter Verwendung der Java-Kernbibliothek.

2. Projekteinrichtung und Abhängigkeit

Für diesen Artikel verwenden wir ein einfaches Maven-basiertes Projekt mit einer Abhängigkeit von der Java-Mailbibliothek:

 javax.mail mail 1.5.0-b01 

Die neueste Version finden Sie hier.

3. Senden eines einfachen Textes und einer HTML-E-Mail

Zunächst müssen wir die Bibliothek mit den Anmeldeinformationen unseres E-Mail-Dienstanbieters konfigurieren. Anschließend erstellen wir eine Sitzung , die zum Erstellen unserer Nachricht zum Senden verwendet wird.

Die Konfiguration erfolgt über ein Java Properties- Objekt:

Properties prop = new Properties(); prop.put("mail.smtp.auth", true); prop.put("mail.smtp.starttls.enable", "true"); prop.put("mail.smtp.host", "smtp.mailtrap.io"); prop.put("mail.smtp.port", "25"); prop.put("mail.smtp.ssl.trust", "smtp.mailtrap.io");

In der obigen Eigenschaftenkonfiguration haben wir den E-Mail-Host als Mailtrap konfiguriert und verwenden auch den vom Dienst bereitgestellten Port.

Gehen wir nun weiter, indem wir eine Sitzung mit unserem Benutzernamen und Passwort erstellen:

Session session = Session.getInstance(prop, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } });

Der Benutzername und das Passwort werden vom Mail-Dienstanbieter zusammen mit den Host- und Port-Parametern angegeben.

Nachdem wir ein Mail- Session- Objekt haben, erstellen wir eine Mime- Nachricht zum Senden:

Message message = new MimeMessage(session); message.setFrom(new InternetAddress("[email protected]")); message.setRecipients( Message.RecipientType.TO, InternetAddress.parse("[email protected]")); message.setSubject("Mail Subject"); String msg = "This is my first email using JavaMailer"; MimeBodyPart mimeBodyPart = new MimeBodyPart(); mimeBodyPart.setContent(msg, "text/html"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(mimeBodyPart); message.setContent(multipart); Transport.send(message);

Im obigen Snippet haben wir zuerst eine Nachrichteninstanz mit den erforderlichen Eigenschaften erstellt - to, from und subject. Gefolgt von einem mimeBodyPart mit einer Codierung von Text / HTML, da unsere Nachricht in HTML gestaltet ist.

Als nächstes haben wir eine Instanz des MimeMultipart- Objekts erstellt, mit der wir das von uns erstellte mimeBodyPart umschließen können .

Schließlich legen wir das mehrteilige Objekt als Inhalt unserer Nachricht fest und verwenden das Objekt send () of Transport , um den Mailversand durchzuführen.

Wir können also sagen, dass das mimeBodyPart in dem Multipart enthalten ist, der in der Nachricht enthalten ist. Daher kann ein Multipart mehr als ein mimeBodyPart enthalten .

Dies wird der Schwerpunkt des nächsten Abschnitts sein.

4. Senden einer E-Mail mit einem Anhang

Um einen Anhang zu senden, müssen wir nur ein weiteres MimeBodyPart erstellen und die Datei (en) daran anhängen:

MimeBodyPart attachmentBodyPart = new MimeBodyPart(); attachmentBodyPart.attachFile(new File("path/to/file"));

Anschließend können wir das neue Körperteil zum zuvor erstellten MimeMultipart- Objekt hinzufügen :

multipart.addBodyPart(attachmentBodyPart);

Das ist alles was wir tun müssen.

Wieder einmal legen wir die mehrteilige Instanz als Inhalt des Nachrichtenobjekts fest und verwenden schließlich send () , um die E-Mails zu senden .

5. Schlussfolgerung

Zusammenfassend haben wir gesehen, wie die native Java-Mail-Bibliothek verwendet wird, um E-Mails auch mit Anhang zu senden.

Wie immer ist der vollständige Quellcode auf Github verfügbar.