E-Mail-Versand mit Kotlin: Bibliotheken und Codebeispiele

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: Vollständige Anleitung zu Bibliotheken und Tools



Der E-Mail-Versand ist eine der wichtigsten Aufgaben in modernen Webanwendungen: von der Registrierungsbestätigung bis hin zu Benachrichtigungen und Marketing-Newslettern. Kotlin als moderne Sprache für die JVM bietet mehrere Ansätze für die Arbeit mit E-Mails. In diesem Artikel betrachten wir drei Hauptvarianten: das klassische JavaMail, den asynchronen Ktor Client und den Cloud-Dienst SendGrid. Sie erfahren, wie Sie einfache Text- und HTML-E-Mails versenden, Dateien anhängen und Fehler behandeln.



1. JavaMail – der bewährte Standard



JavaMail ist die Standardbibliothek für die E-Mail-Verarbeitung im Java/Kotlin-Ökosystem. Sie unterstützt die Protokolle SMTP, POP3 und IMAP sowie SSL/TLS-Verschlüsselung. Für ein Kotlin-Projekt fügen Sie einfach die Abhängigkeit in build.gradle.kts hinzu:



dependencies {    implementation("com.sun.mail:jakarta.mail:2.0.1")}


Beispiel für den Versand einer einfachen Text-E-Mail über SMTP mit Authentifizierung:



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

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

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

try { val message = MimeMessage(session).apply { setFrom(InternetAddress("your-email@gmail.com")) setRecipient(Message.RecipientType.TO, InternetAddress("recipient@example.com")) subject = "Hallo von Kotlin!" setText("Dies ist eine Test-E-Mail, gesendet mit JavaMail.") } Transport.send(message) println("E-Mail erfolgreich gesendet!") } catch (e: MessagingException) { println("Fehler beim Senden: ${e.message}") }}


Wichtig: Für Gmail müssen Sie ein App-Passwort (App Password) verwenden, nicht Ihr Hauptpasswort. Sie können SMTP auch für Yandex, Mail.ru oder Ihren eigenen Server konfigurieren.



2. Ktor Client – asynchroner Ansatz



Wenn Sie das Framework Ktor zum Erstellen von Webanwendungen verwenden, können Sie E-Mails über HTTP-Anfragen an E-Mail-APIs (z. B. Mailgun, SendGrid, Postmark) senden. Dies ist praktisch für asynchrone Dienste und Microservices-Architekturen.



Fügen Sie die Abhängigkeit hinzu:



dependencies {    implementation("io.ktor:ktor-client-core:2.3.7")    implementation("io.ktor:ktor-client-cio:2.3.7")    implementation("io.ktor:ktor-client-content-negotiation:2.3.7")    implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.7")}


Beispiel für den E-Mail-Versand über die SendGrid-API:



import io.ktor.client.*import io.ktor.client.call.*import io.ktor.client.plugins.contentnegotiation.*import io.ktor.client.request.*import io.ktor.http.*import io.ktor.serialization.kotlinx.json.*import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Json

@Serializabledata class EmailRequest( val personalizations: List<Personalization>, val from: EmailAddress, val subject: String, val content: List<Content>)

@Serializabledata class Personalization(val to: List<EmailAddress>)

@Serializabledata class EmailAddress(val email: String)

@Serializabledata class Content(val type: String, val value: String)

suspend fun sendEmailViaSendGrid() { val client = HttpClient(CIO) { install(ContentNegotiation) {

Empfehlungen