1. O que é o Swift?
O Swift é uma biblioteca de email para PHP que fornece uma alternativa fácil de usar e bem documentada ao PHPMailer. Ele permite enviar e-mails com anexos, personalização de e-mails, gerenciamento de cabeçalhos e muito mais.
2. Como instalar o Swift?
Você pode instalar o Swift usando o Composer. Basta incluir o pacote “swiftmailer/swiftmailer” em seu arquivo composer.json e depois executar o comando “composer update” no terminal. Você também precisa criar uma instância da classe Mailer do Swift no seu aplicativo Symfony.
composer require swiftmailer/swiftmailer
3. Como configurar o Swift no Symfony?
Você precisa definir as configurações do serviço mailer no arquivo config/packages/swiftmailer.yaml. Aqui está um exemplo:
swiftmailer:
transport: smtp
host: 'smtp.gmail.com'
encryption: ssl
port: 465
username: 'your-email@gmail.com'
password: 'password'
Essas configurações são para enviar e-mails usando o servidor SMTP do Gmail. Certifique-se de substituir o endereço de e-mail e a senha para seus próprios detalhes.
4. Como enviar um e-mail básico com o Swift?
Primeiro, crie uma instância da classe Message do Swift e configure as informações do remetente e do destino:
$message = (new Swift_Message('Assunto do E-mail'))
->setFrom('remetente@email.com')
->setTo('destinatario@email.com')
->setBody('Corpo do E-mail');
Em seguida, crie uma instância do serviço Mailer do Swift e envie o e-mail:
$mailer = new Swift_Mailer($transport);
$mailer->send($message);
5. Como enviar um e-mail com anexos?
Você pode adicionar anexos ao e-mail usando o método “attach” da classe Message. Aqui está um exemplo:
$message = (new Swift_Message('Assunto do E-mail'))
->setFrom('remetente@email.com')
->setTo('destinatario@email.com')
->setBody('Corpo do E-mail')
->attach(Swift_Attachment::fromPath('/caminho/para/o/arquivo'));
O método “fromPath” cria uma instância de “Swift_Attachment” a partir do arquivo especificado no caminho. Você pode adicionar vários anexos chamando o método “attach” várias vezes.
6. Como enviar um e-mail personalizado?
Você pode personalizar seus e-mails adicionando uma vista e passando parâmetros para ela. Aqui está um exemplo:
$message = (new Swift_Message('Assunto do E-mail'))
->setFrom('remetente@email.com')
->setTo('destinatario@email.com')
->setBody(
$this->renderView(
'emails/exemplo.html.twig',
['nome' => 'João']
),
'text/html'
);
Neste exemplo, passamos o parâmetro “nome” para uma vista de modelo do Twig chamada “emails/exemplo.html.twig”. O conteúdo dessa visualização é renderizado como o corpo do e-mail.
7. Como adicionar cabeçalhos ao e-mail?
Você pode adicionar cabeçalhos personalizados ao e-mail usando o método “getHeaders” da classe Message. Aqui está um exemplo:
$message = (new Swift_Message('Assunto do E-mail'))
->setFrom('remetente@email.com')
->setTo('destinatario@email.com')
->setBody('Corpo do E-mail')
->getHeaders()
->addTextHeader('X-Custom-Header', 'Valor do cabeçalho');
Neste exemplo, adicionamos um cabeçalho personalizado chamado “X-Custom-Header” com um valor de “Valor do cabeçalho”.
8. Como enviar e-mails em lote?
Se você precisar enviar vários e-mails para o mesmo conjunto de destinatários, pode ser mais eficiente enviar os e-mails em lote. Aqui está um exemplo:
$transport = (new Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl'))
->setUsername('your-email@gmail.com')
->setPassword('password');
$mailer = new Swift_Mailer($transport);
$message1 = (new Swift_Message('Assunto do E-mail 1'))
->setFrom('remetente@email.com')
->setTo('destinatario@email.com')
->setBody('Corpo do E-mail 1');
$message2 = (new Swift_Message('Assunto do E-mail 2'))
->setFrom('remetente@email.com')
->setTo('destinatario@email.com')
->setBody('Corpo do E-mail 2');
$failedRecipients = [];
$mailer->send([$message1, $message2], $failedRecipients);
Neste exemplo, criamos duas instâncias da classe Message e, em seguida, as enviamos em lote chamando o método “send” do Mailer. O método “send” retorna o número de destinatários que a mensagem foi entregue com sucesso e os endereços de e-mail dos destinatários que falharam.
9. Como depurar problemas de e-mail com o Swift?
Se você estiver enfrentando problemas ao enviar e-mails com o Swift, poderá habilitar o modo de depuração para examinar os resultados dos comandos SMTP enviados para o servidor. Aqui está um exemplo:
$transport = (new Swift_SmtpTransport('smtp.gmail.com', 587, 'tls'))
->setUsername('your-email@gmail.com')
->setPassword('password')
->setStreamOptions(['ssl' => ['allow_self_signed' => true, 'verify_peer' => false]]);
$mailer = new Swift_Mailer($transport);
$mailer->registerPlugin(new Swift_Plugins_DebugPlugin(new Swift_Plugins_Loggers_EchoLogger()));
Neste exemplo, criamos uma instância do serviço Mailer e registrando um plug-in de depuração para imprimir os comandos SMTP enviados para o servidor no console de saída.
10. Existem alternativas ao Swift?
Sim, existem outras bibliotecas de e-mail para PHP, como o PHPMailer e o Zend Mail. O PHPMailer é uma biblioteca muito popular que oferece recursos semelhantes ao Swift. Zend Mail é uma biblioteca para enviar e-mails usando o Zend Framework.