Emails mit Java versenden

Versenden von E-Mails mit Java

1. Überblick

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 unterhere.

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 einSession , das zum Erstellen unserer Nachricht zum Senden verwendet wird.

Die Konfiguration erfolgt über ein JavaProperties -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 Konfiguration der Eigenschaften haben wir den E-Mail-Host als Mailtrap konfiguriert und den vom Dienst bereitgestellten Port ebenfalls verwendet.

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 Kennwort werden vom Mail-Dienstanbieter zusammen mit den Host- und Port-Parametern angegeben.

Nachdem wir ein Mail-ObjektSession haben, erstellen wir einMimeMessage 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 einemessage -Sinstanz mit den erforderlichen Eigenschaften erstellt - zu, von und Subjekt. Gefolgt von einemmimeBodyPart-Stat, der eine Codierung vontext/html, hat, da unsere Nachricht in HTML gestaltet ist.

Als nächstes haben wir eine Instanz vonMimeMultipart erstellt, mit der wir die von uns erstelltenmimeBodyPart umschließen können.

Schließlich setzen wir das Objektmultipart als Inhalt unserermessage und verwenden das Objektsend()ofTransport , um den Mailversand durchzuführen.

So, we can say that the mimeBodyPartis contained in the multipart that is contained in the message. Hence, a multipart can contain more than one mimeBodyPart.

Dies wird der Schwerpunkt des nächsten Abschnitts sein.

4. E-Mail mit Anhang senden

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

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

Wir können dann den neuen Körperteil zu dem zuvor erstelltenMimeMultipart-Objekt hinzufügen:

multipart.addBodyPart(attachmentBodyPart);

Das ist alles was wir tun müssen.

Once again, we set the multipart instance as the content of the message object and finally we’ll use the send() to do the mail sending.

5. Fazit

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

Wie immer ist der vollständige Quellcodeover on Github verfügbar.