Envio de Email em Swift: Guia Completo sobre SMTP e MailKit

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): Guia Completo

O envio de e-mails é uma das funções-chave dos aplicativos móveis e desktop modernos. Nas plataformas Apple (iOS, macOS, watchOS, tvOS), os desenvolvedores em Swift podem usar várias abordagens: desde o embutido MailComposeViewController até poderosas bibliotecas de terceiros que trabalham diretamente com servidores SMTP. Neste artigo, vamos analisar as principais formas de implementar o envio de email em Swift, incluindo exemplos práticos de código, configuração de SMTP e trabalho com anexos.



Por que o envio de email é necessário no aplicativo?

A funcionalidade de email pode ser útil em vários cenários:

  • Registro e confirmação de conta
  • Envio de relatórios de erros e feedback
  • Envio de notificações e novidades
  • Envio de recibos, faturas e documentos
  • Recuperação de senha


Formas de enviar email em Swift

Existem duas abordagens principais:

  • Mail Compose embutido (MFMailComposeViewController) — usa o aplicativo de email padrão do iOS/macOS. Simples, mas exige que o usuário esteja autenticado no cliente de email.
  • Envio direto via SMTP — envia e-mails diretamente do servidor, sem a participação do usuário. Ideal para notificações automáticas.


Método 1: Usando MFMailComposeViewController

Este método é adequado quando você precisa dar ao usuário a capacidade de enviar um email do aplicativo usando sua própria caixa de correio.

import UIKitimport MessageUI

class ViewController: UIViewController, MFMailComposeViewControllerDelegate { @IBAction func sendEmailTapped(_ sender: UIButton) { guard MFMailComposeViewController.canSendMail() else { print("Cliente de email não configurado") return } let mailComposer = MFMailComposeViewController() mailComposer.mailComposeDelegate = self mailComposer.setToRecipients(["support@example.com"]) mailComposer.setSubject("Feedback do aplicativo") mailComposer.setMessageBody("Olá! Eu tenho uma pergunta...", isHTML: false) // Adicionar anexo if let fileData = "Texto de exemplo".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("Email enviado") case .saved: print("Email salvo") case .cancelled: print("Envio cancelado") case .failed: print("Erro ao enviar: \\(error?.localizedDescription ?? "")") @unknown default: break } }}


Método 2: Envio direto via SMTP (SwiftSMTP)

Para o envio automático de e-mails sem a participação do usuário, utiliza-se a biblioteca SwiftSMTP. Ela permite conectar-se a qualquer servidor SMTP (Gmail, Yandex, Mail.ru, servidor próprio).



Instalação via Swift Package Manager:

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


Exemplo de envio de email via SMTP:

import SwiftSMTP

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

Recommendations