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: Bibliotheksübersicht und praktische Beispiele



Kotlin ist eine moderne Programmiersprache, die aktiv für die Entwicklung von Serveranwendungen, Backends und Microservices eingesetzt wird. Die Möglichkeit, programmatisch E-Mails zu versenden, ist eine Schlüsselfunktion für viele Projekte: Benachrichtigungen, Registrierungsbestätigungen, Newsletter. In diesem Artikel schauen wir uns an, wie man den E-Mail-Versand mit Kotlin organisiert, welche Bibliotheken verwendet werden und wie man eine SMTP-Verbindung einrichtet.



Hauptmethoden zum E-Mail-Versand in Kotlin



Da Kotlin auf der JVM läuft, können Sie alle Java-Bibliotheken nutzen. Die beliebteste und bewährteste Methode ist JavaMail (Jakarta Mail). Eine Alternative ist der Ktor Client (Teil des Ktor-Frameworks), der direkt mit SMTP arbeiten kann. Wir betrachten beide Ansätze.



1. E-Mail-Versand mit Jakarta Mail (JavaMail)



Jakarta Mail (früher JavaMail) ist die Standardbibliothek für die E-Mail-Verarbeitung im Java-Ökosystem. Für Kotlin ist sie ideal geeignet, da sie vollständig mit der JVM kompatibel ist. Sie müssen die Abhängigkeit in build.gradle.kts hinzufügen:



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


Nach dem Hinzufügen der Bibliothek können Sie eine einfache Versandfunktion schreiben:



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

fun sendEmail( host: String, port: Int, username: String, password: String, from: String, to: String, subject: String, body: String) { val props = Properties().apply { put("mail.smtp.host", host) put("mail.smtp.port", port.toString()) put("mail.smtp.auth", "true") put("mail.smtp.starttls.enable", "true") }

val session = Session.getInstance(props, object : Authenticator() { override fun getPasswordAuthentication(): PasswordAuthentication { return PasswordAuthentication(username, password) } })

try { val message = MimeMessage(session).apply { setFrom(InternetAddress(from)) setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)) setSubject(subject) setText(body) } Transport.send(message) println("E-Mail erfolgreich an $to gesendet") } catch (e: MessagingException) { println("Fehler beim Senden: ${e.message}") }}


Aufruf der Funktion:



fun main() {    sendEmail(        host = "smtp.gmail.com",        port = 587,        username = "youremail@gmail.com",        password = "your-app-password",        from = "youremail@gmail.com",        to = "recipient@example.com",        subject = "Hallo von Kotlin!",        body = "Dies ist eine Test-E-Mail, gesendet über Kotlin und Jakarta Mail."    )}


2. E-Mail-Versand mit Anhängen (Jakarta Mail)



Um eine E-Mail mit einer Datei zu versenden, müssen Sie MimeBodyPart und MimeMultipart verwenden:



import jakarta.mail.internet.MimeBodyPartimport jakarta.mail.internet.MimeMultipartimport java.io.File

fun sendEmailWithAttachment( session: Session, from: String, to: String, subject: String, body: String, attachmentPath: String) { val message = MimeMessage(session).apply { setFrom(InternetAddress(from)) setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)) setSubject(subject) }

// Textteil val textPart = MimeBodyPart().apply { setText(body) }

// Anhang val attachmentPart = MimeBodyPart().apply { attachFile(File(attachmentPath)) }

// Multipart zusammenstellen val multipart = MimeMultipart().apply { addBodyPart(textPart)

Empfehlungen