Envoi d'Email en Swift : Guide Complet sur SMTP et MailKit

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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

Recommendations