E-Mail-Versand mit Swift: Bibliotheken und Beispiele für iOS/macOS

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 Swift (iOS/macOS): Bibliotheken und praktische Beispiele



Das Versenden von E-Mails ist eine der Kernfunktionen vieler Anwendungen: von der Benutzerregistrierung und dem Zurücksetzen von Passwörtern bis hin zum Versand von Benachrichtigungen und Marketingkampagnen. Im Swift-Ökosystem (iOS/macOS) gibt es mehrere Ansätze zur Umsetzung dieser Aufgabe. In diesem Artikel betrachten wir die wichtigsten Bibliotheken, ihre Funktionen und liefern fertige Codebeispiele für die Integration.



Grundlegende Ansätze zum E-Mail-Versand mit Swift



Es gibt drei Hauptwege, um E-Mails aus Swift-Anwendungen zu versenden:

  • Verwendung von MFMailComposeViewController – die integrierte Systemoberfläche zum Versenden von E-Mails (nur iOS). Ermöglicht dem Benutzer das Senden einer E-Mail über den auf dem Gerät installierten E-Mail-Client, ist jedoch nicht für den automatischen (serverseitigen) Versand geeignet.
  • Direkte SMTP-Verbindung – Bibliotheken, die das SMTP-Protokoll clientseitig implementieren (z. B. SwiftSMTP). Geeignet zum direkten Versenden von E-Mails vom Gerät ohne Zwischenserver.
  • Nutzung von APIs externer Dienste – Cloud-Lösungen (Mailgun, SendGrid, Amazon SES), die eine REST-API bereitstellen. Dies ist der zuverlässigste und skalierbarste Ansatz für Produktionsanwendungen.


Die SwiftSMTP-Bibliothek für direkte SMTP-Verbindung



SwiftSMTP ist eine beliebte Open-Source-Bibliothek, die einen SMTP-Client in Swift implementiert. Sie unterstützt:

  • Versand von Text- und HTML-E-Mails
  • Anhänge (Bilder, PDFs, Archive)
  • Unterstützung von TLS/SSL
  • Authentifizierung mit Benutzername/Passwort


Beispiel für den Versand einer einfachen E-Mail über Gmail SMTP:



import SwiftSMTP

let smtp = SMTP( host: "smtp.gmail.com", // SMTP-Server port: 587, // Port für TLS username: "you@gmail.com", password: "your-app-password")

let mail = Mail( from: Mail.User(name: "Absender", email: "you@gmail.com"), to: [Mail.User(name: "Empfänger", email: "recipient@example.com")], subject: "Hallo von Swift!", text: "Dies ist eine Test-E-Mail, gesendet mit SwiftSMTP.")

smtp.send(mail) { error in if let error = error { print("Fehler beim Senden: \\(error)") } else { print("E-Mail erfolgreich gesendet!") }}


Für die Arbeit mit Gmail wird ein App-Passwort (App Password) benötigt, da das normale Passwort bei aktivierter Zwei-Faktor-Authentifizierung nicht funktioniert.



E-Mail-Versand über Mailgun (API)



Mailgun ist einer der beliebtesten Dienste für den Versand von Transaktions-E-Mails. Er bietet eine einfache REST-API und ein SDK für Swift. Hauptvorteile:

  • Hohe Zustellbarkeit (durch die Reputation der IP-Adressen)
  • Verfolgung von Öffnungen und Klicks
  • Unterstützung von Vorlagen


Beispiel für den Versand einer E-Mail über die Mailgun-API mit URLSession:



import Foundation

func sendEmailViaMailgun(to recipient: String, subject: String, body: String) { let apiKey = "YOUR_MAILGUN_API_KEY" let domain = "YOUR_DOMAIN.mailgun.org" let urlString = "https://api.mailgun.net/v3/\\(domain)/messages" guard let url = URL(string: urlString) else { return } var request = URLRequest(url: url) request.httpMethod = "POST" let credentials = "api:\\(apiKey)" let authData = credentials.data(using: .utf8)!.base64EncodedString() request.setValue("Basic \\(authData)", forHTTPHeaderField: "Authorization") request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") let parameters = [ "from": "My App <noreply@\\(domain)>", "to": recipient, "subject": subject, "text": body ] let bodyString = parameters

Empfehlungen