E-Mail-Versand mit Swift: Vollständiger Leitfaden zu SMTP und MailKit

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): Vollständiger Leitfaden

Das Versenden von E-Mails ist eine der Schlüsselfunktionen moderner mobiler und Desktop-Anwendungen. Auf den Apple-Plattformen (iOS, macOS, watchOS, tvOS) können Swift-Entwickler mehrere Ansätze nutzen: vom integrierten MailComposeViewController bis hin zu leistungsstarken Drittanbieter-Bibliotheken, die direkt mit SMTP-Servern arbeiten. In diesem Artikel analysieren wir die wichtigsten Methoden zur Implementierung des E-Mail-Versands mit Swift, einschließlich praktischer Codebeispiele, SMTP-Konfiguration und der Arbeit mit Anhängen.



Warum ist der E-Mail-Versand in einer App notwendig?

Die E-Mail-Funktionalität kann in verschiedenen Szenarien nützlich sein:

  • Registrierung und Bestätigung des Benutzerkontos
  • Senden von Fehlerberichten und Feedback
  • Versand von Benachrichtigungen und Newslettern
  • Senden von Quittungen, Rechnungen und Dokumenten
  • Passwort-Wiederherstellung


Methoden zum E-Mail-Versand mit Swift

Es gibt zwei Hauptansätze:

  • Integrierter Mail Compose (MFMailComposeViewController) – verwendet die Standard-Mail-App von iOS/macOS. Einfach, erfordert jedoch, dass der Benutzer im E-Mail-Client angemeldet ist.
  • Direkter Versand über SMTP – sendet E-Mails direkt vom Server, ohne Benutzereingriff. Ideal für automatische Benachrichtigungen.


Methode 1: Verwendung von MFMailComposeViewController

Diese Methode eignet sich, wenn dem Benutzer die Möglichkeit gegeben werden soll, eine E-Mail aus der App mit seinem persönlichen Postfach zu senden.

import UIKitimport MessageUI

class ViewController: UIViewController, MFMailComposeViewControllerDelegate { @IBAction func sendEmailTapped(_ sender: UIButton) { guard MFMailComposeViewController.canSendMail() else { print("E-Mail-Client ist nicht eingerichtet") return } let mailComposer = MFMailComposeViewController() mailComposer.mailComposeDelegate = self mailComposer.setToRecipients(["support@example.com"]) mailComposer.setSubject("Feedback aus der App") mailComposer.setMessageBody("Hallo! Ich habe eine Frage...", isHTML: false) // Anhang hinzufügen if let fileData = "Beispieltext".data(using: .utf8) { mailComposer.addAttachmentData(fileData, mimeType: "text/plain", fileName: "file.txt") } present(mailComposer, animated: true, completion: nil) } // MARK: - MFMailComposeViewControllerDelegate func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { controller.dismiss(animated: true, completion: nil) switch result { case .sent: print("E-Mail gesendet") case .saved: print("E-Mail gespeichert") case .cancelled: print("Senden abgebrochen") case .failed: print("Fehler beim Senden: \\(error?.localizedDescription ?? "")") @unknown default: break } }}


Methode 2: Direkter Versand über SMTP (SwiftSMTP)

Für den automatischen E-Mail-Versand ohne Benutzereingriff wird die Bibliothek SwiftSMTP verwendet. Sie ermöglicht die Verbindung zu jedem SMTP-Server (Gmail, Yandex, Mail.ru, eigener Server).



Installation über Swift Package Manager:

// In Package.swift oder über Xcode: File → Add Packagesdependencies: [    .package(url: "https://github.com/Kitura/Swift-SMTP.git", from: "2.0.0")]


Beispiel zum Senden einer E-Mail über SMTP:

import SwiftSMTP

func sendEmail() { let smtp = SMTP( hostname: "smtp.gmail.com", // SMTP-Server

Empfehlungen