E-Mail-Versand mit Kotlin: Bibliotheken, Beispiele und SMTP-Konfiguration

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

E-Mail-Versand mit Kotlin: Werkzeugübersicht und Codebeispiele



Das Versenden von E-Mails ist eine typische Aufgabe in der Webentwicklung, bei Benachrichtigungen und Hintergrunddiensten. Im Kotlin-Ökosystem, das auf der JVM läuft, können sowohl klassische Java-Bibliotheken als auch moderne Kotlin-orientierte Lösungen verwendet werden. In diesem Artikel betrachten wir drei Hauptansätze: javax.mail (Jakarta Mail), Ktor Client und Apache Commons Email. Sie erfahren, wie Sie einen SMTP-Client konfigurieren, eine einfache E-Mail senden und Anhänge hinzufügen.



1. javax.mail (Jakarta Mail) – der klassische Standard

Die am weitesten verbreitete Bibliothek für die Arbeit mit E-Mails in Java und Kotlin. Sie unterstützt die Protokolle SMTP, IMAP und POP3 vollständig. Für ein Kotlin-Projekt fügen Sie einfach die Abhängigkeit in build.gradle.kts hinzu:

dependencies {    implementation("com.sun.mail:javax.mail:1.6.2")}


Beispiel zum Senden einer einfachen Text-E-Mail:

import javax.mail.*import javax.mail.internet.InternetAddressimport javax.mail.internet.MimeMessageimport java.util.Properties

fun sendSimpleEmail() { val props = Properties().apply { put("mail.smtp.auth", "true") put("mail.smtp.starttls.enable", "true") put("mail.smtp.host", "smtp.gmail.com") put("mail.smtp.port", "587") }

val session = Session.getInstance(props, object : Authenticator() { override fun getPasswordAuthentication(): PasswordAuthentication { return PasswordAuthentication("your-email@gmail.com", "your-password") } })

val message = MimeMessage(session).apply { setFrom(InternetAddress("from-email@gmail.com")) setRecipients(Message.RecipientType.TO, InternetAddress.parse("to-email@example.com")) subject = "Hallo von Kotlin!" setText("Dies ist eine Test-E-Mail, gesendet mit javax.mail.") }

Transport.send(message) println("E-Mail erfolgreich gesendet!")}


Wichtig: Für Gmail benötigen Sie ein App-Passwort oder OAuth2. Speichern Sie Anmeldedaten nicht im Code – verwenden Sie Umgebungsvariablen.



E-Mail mit Anhang senden

import javax.activation.DataHandlerimport javax.activation.FileDataSourceimport javax.mail.internet.MimeBodyPartimport javax.mail.internet.MimeMultipart

fun sendEmailWithAttachment() { // ... session-Konfiguration wie oben ... val message = MimeMessage(session).apply { setFrom(InternetAddress("from@gmail.com")) setRecipients(Message.RecipientType.TO, InternetAddress.parse("to@example.com")) subject = "E-Mail mit Anhang" }

val multipart = MimeMultipart()

// Textteil val textPart = MimeBodyPart().apply { setText("Siehe Anhang.") } multipart.addBodyPart(textPart)

// Anhang val attachmentPart = MimeBodyPart().apply { dataHandler = DataHandler(FileDataSource("/path/to/file.pdf")) fileName = "dokument.pdf" } multipart.addBodyPart(attachmentPart)

message.setContent(multipart) Transport.send(message)}


2. Ktor Client – moderner asynchroner Ansatz

Wenn Ihr Projekt bereits Ktor für HTTP-Anfragen verwendet, können Sie E-Mails über SMTP mit dem Plugin ktor-client-smtp senden. Dies bietet die Vorteile von Koroutinen und asynchroner Ausführung. Abhängigkeit:

dependencies {    implementation("io.ktor:ktor-client-core:2.3.0")    implementation("io.ktor:ktor-client-smtp:2.3.0")}


Beispiel zum Senden:

import io.ktor.client.*import io.ktor.client.smtp.*import io.ktor.client.request.*import io.ktor.client.statement.*

suspend fun sendViaKtor() { val client = HttpClient {

Empfehlungen