Envio de email em Swift: bibliotecas e exemplos para iOS/macOS

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Envio de email em Swift (iOS/macOS): bibliotecas e exemplos práticos



O envio de e-mails é uma das funções-chave de muitas aplicações: desde o registro de usuários e redefinição de senhas até o envio de notificações e campanhas de marketing. No ecossistema Swift (iOS/macOS), existem várias abordagens para implementar essa tarefa. Neste artigo, veremos as principais bibliotecas, seus recursos e forneceremos exemplos de código prontos para integração.



Principais abordagens para envio de email em Swift



Existem três maneiras principais de enviar e-mails a partir de aplicações em Swift:

  • Uso de MFMailComposeViewController — interface de sistema integrada para envio de e-mails (apenas iOS). Permite que o usuário envie um e-mail através do cliente de email instalado no dispositivo, mas não é adequado para envio automático (servidor).
  • Conexão direta via SMTP — bibliotecas que implementam o protocolo SMTP no lado do cliente (por exemplo, SwiftSMTP). Adequado para enviar e-mails diretamente do dispositivo sem um servidor intermediário.
  • Uso de API de serviços terceiros — soluções em nuvem (Mailgun, SendGrid, Amazon SES) que fornecem uma REST API. Esta é a maneira mais confiável e escalável para aplicações de produção.


Biblioteca SwiftSMTP para conexão SMTP direta



SwiftSMTP é uma biblioteca popular de código aberto que implementa um cliente SMTP em Swift. Ela suporta:

  • Envio de e-mails em texto e HTML
  • Anexos (imagens, PDFs, arquivos)
  • Suporte a TLS/SSL
  • Autenticação por login/senha


Exemplo de envio de um e-mail simples via Gmail SMTP:



import SwiftSMTP

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

let mail = Mail( from: Mail.User(name: "Remetente", email: "you@gmail.com"), to: [Mail.User(name: "Destinatário", email: "recipient@example.com")], subject: "Olá do Swift!", text: "Este é um e-mail de teste enviado com SwiftSMTP.")

smtp.send(mail) { error in if let error = error { print("Erro ao enviar: \\(error)") } else { print("E-mail enviado com sucesso!") }}


Para trabalhar com Gmail, será necessário uma senha de aplicativo (App Password), pois a senha normal não funciona com a autenticação de dois fatores ativada.



Envio de email via Mailgun (API)



Mailgun é um dos serviços mais populares para envio de e-mails transacionais. Ele fornece uma REST API simples e um SDK para Swift. Principais vantagens:

  • Alta taxa de entrega (devido à reputação dos endereços IP)
  • Rastreamento de aberturas e cliques
  • Suporte a templates


Exemplo de envio de e-mail via API do Mailgun usando 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