Envoi d'email en Swift : bibliothèques et exemples pour iOS/macOS

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) : bibliothèques et exemples pratiques



L'envoi d'emails est l'une des fonctions clés de nombreuses applications : de l'inscription des utilisateurs et la réinitialisation des mots de passe à l'envoi de notifications et de campagnes marketing. Dans l'écosystème Swift (iOS/macOS), il existe plusieurs approches pour implémenter cette tâche. Dans cet article, nous examinerons les principales bibliothèques, leurs fonctionnalités et fournirons des exemples de code prêts à l'emploi pour l'intégration.



Approches principales pour l'envoi d'email en Swift



Il existe trois façons principales d'envoyer des emails depuis des applications en Swift :

  • Utilisation de MFMailComposeViewController — interface système intégrée pour l'envoi d'emails (iOS uniquement). Permet à l'utilisateur d'envoyer un email via le client mail installé sur l'appareil, mais ne convient pas pour l'envoi automatique (serveur).
  • Connexion directe via SMTP — bibliothèques implémentant le protocole SMTP côté client (par exemple, SwiftSMTP). Convient pour l'envoi d'emails directement depuis l'appareil sans serveur intermédiaire.
  • Utilisation des API de services tiers — solutions cloud (Mailgun, SendGrid, Amazon SES) qui fournissent une API REST. C'est la méthode la plus fiable et évolutive pour les applications de production.


Bibliothèque SwiftSMTP pour connexion SMTP directe



SwiftSMTP est une bibliothèque open source populaire implémentant un client SMTP en Swift. Elle prend en charge :

  • L'envoi d'emails texte et HTML
  • Les pièces jointes (images, PDF, archives)
  • La prise en charge de TLS/SSL
  • L'authentification par identifiant/mot de passe


Exemple d'envoi d'un email simple via Gmail SMTP :



import SwiftSMTP

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

let mail = Mail( from: Mail.User(name: "Expéditeur", email: "you@gmail.com"), to: [Mail.User(name: "Destinataire", email: "recipient@example.com")], subject: "Bonjour depuis Swift!", text: "Ceci est un email de test envoyé avec SwiftSMTP.")

smtp.send(mail) { error in if let error = error { print("Erreur d'envoi : \\(error)") } else { print("Email envoyé avec succès !") }}


Pour fonctionner avec Gmail, vous aurez besoin d'un mot de passe d'application (App Password), car le mot de passe normal ne fonctionne pas lorsque l'authentification à deux facteurs est activée.



Envoi d'email via Mailgun (API)



Mailgun est l'un des services les plus populaires pour l'envoi d'emails transactionnels. Il fournit une API REST simple et un SDK pour Swift. Principaux avantages :

  • Haute délivrabilité (grâce à la réputation des adresses IP)
  • Suivi des ouvertures et des clics
  • Prise en charge des modèles


Exemple d'envoi d'email via l'API Mailgun en utilisant 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

Recommendations