Envoi d'Email en Swift (iOS/macOS) : Guide Complet
L'envoi d'e-mails est l'une des fonctions clés des applications mobiles et de bureau modernes. Sur les plateformes Apple (iOS, macOS, watchOS, tvOS), les développeurs Swift peuvent utiliser plusieurs approches : du MailComposeViewController intégré aux puissantes bibliothèques tierces fonctionnant directement avec les serveurs SMTP. Dans cet article, nous examinerons les principales méthodes d'implémentation de l'envoi d'email en Swift, y compris des exemples de code pratiques, la configuration SMTP et la gestion des pièces jointes.
Pourquoi l'envoi d'email dans une application ?
La fonctionnalité email peut être utile dans divers scénarios :
- Inscription et confirmation de compte
- Envoi de rapports d'erreurs et de retours
- Envoi de notifications et de newsletters
- Envoi de reçus, factures et documents
- Réinitialisation de mot de passe
Méthodes d'envoi d'email en Swift
Il existe deux approches principales :
- Mail Compose intégré (MFMailComposeViewController) — utilise l'application de messagerie standard d'iOS/macOS. Simple, mais nécessite que l'utilisateur soit connecté à un client de messagerie.
- Envoi direct via SMTP — envoie les e-mails directement depuis le serveur, sans intervention de l'utilisateur. Idéal pour les notifications automatiques.
Méthode 1 : Utilisation de MFMailComposeViewController
Cette méthode convient lorsque vous souhaitez permettre à l'utilisateur d'envoyer un e-mail depuis l'application en utilisant sa propre boîte aux lettres.
import UIKitimport MessageUI
class ViewController: UIViewController, MFMailComposeViewControllerDelegate { @IBAction func sendEmailTapped(_ sender: UIButton) { guard MFMailComposeViewController.canSendMail() else { print("Le client de messagerie n'est pas configuré") return } let mailComposer = MFMailComposeViewController() mailComposer.mailComposeDelegate = self mailComposer.setToRecipients(["support@example.com"]) mailComposer.setSubject("Retour de l'application") mailComposer.setMessageBody("Bonjour ! J'ai une question...", isHTML: false) // Ajout d'une pièce jointe if let fileData = "Exemple de texte".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 envoyé") case .saved: print("E-mail sauvegardé") case .cancelled: print("Envoi annulé") case .failed: print("Erreur d'envoi : \\(error?.localizedDescription ?? "")") @unknown default: break } }}Méthode 2 : Envoi direct via SMTP (SwiftSMTP)
Pour l'envoi automatique d'e-mails sans intervention de l'utilisateur, on utilise la bibliothèque SwiftSMTP. Elle permet de se connecter à n'importe quel serveur SMTP (Gmail, Yandex, Mail.ru, serveur personnel).
Installation via Swift Package Manager :
// Dans Package.swift ou via Xcode : File → Add Packagesdependencies: [ .package(url: "https://github.com/Kitura/Swift-SMTP.git", from: "2.0.0")]Exemple d'envoi d'e-mail via SMTP :
import SwiftSMTP
func sendEmail() { let smtp = SMTP( hostname: "smtp.gmail.com", // Serveur SMTP Aussi dans la bibliothèque
Travailler avec Excel en C# (.NET) : bibliothèques EPPlus, ClosedXML et NPOI
ORM pour C++ : comparaison et exemples d'utilisation
Génération de PDF en JavaScript (Node.js) : bibliothèques et outils pour créer des PDF
Guide complet flume Rust : tutoriel avec exemples