Documentação do Symfony2
Renderizada do repositório symfony-docs-pt-BR no Github
Enviar e-mails é uma tarefa clássica para qualquer aplicação web e, possui complicações especiais e potenciais armadilhas. Em vez de recriar a roda, uma solução para enviar e-mails é usar o SwiftmailerBundle, que aproveita o poder da biblioteca Swiftmailer.
Note
Não esqueça de ativar o bundle em seu kernel antes de usá-lo:
public function registerBundles()
{
$bundles = array(
// ...
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
);
// ...
}
Antes de usar o Swiftmailer, não esqueça de incluir a sua configuração. O único parâmetro de configuração obrigatório é o transport:
# app/config/config.yml
swiftmailer:
transport: smtp
encryption: ssl
auth_mode: login
host: smtp.gmail.com
username: your_username
password: your_password
<!-- app/config/config.xml -->
<!--
xmlns:swiftmailer="http://symfony.com/schema/dic/swiftmailer"
http://symfony.com/schema/dic/swiftmailer http://symfony.com/schema/dic/swiftmailer/swiftmailer-1.0.xsd
-->
<swiftmailer:config
transport="smtp"
encryption="ssl"
auth-mode="login"
host="smtp.gmail.com"
username="your_username"
password="your_password" />
// app/config/config.php
$container->loadFromExtension('swiftmailer', array(
'transport' => "smtp",
'encryption' => "ssl",
'auth_mode' => "login",
'host' => "smtp.gmail.com",
'username' => "your_username",
'password' => "your_password",
));
A maioria das configurações do Swiftmailer lidam com a forma como as mensagens devem ser entregues.
Os seguintes atributos de configuração estão disponíveis:
A biblioteca Swiftmailer funciona através da criação, configuração e, então, o envio de objetos Swift_Message. O “mailer” é responsável pela entrega da mensagem e é acessível através do serviço mailer. No geral, o envio de um e-mail é bastante simples:
public function indexAction($name)
{
$message = \Swift_Message::newInstance()
->setSubject('Hello Email')
->setFrom('send@example.com')
->setTo('recipient@example.com')
->setBody($this->renderView('HelloBundle:Hello:email.txt.twig', array('name' => $name)))
;
$this->get('mailer')->send($message);
return $this->render(...);
}
Para manter as coisas desacopladas, o corpo do e-mail foi armazenado em um template e renderizado através do método renderView().
O objeto $message suporta mais opções, como, a inclusão de anexos, a adição de conteúdo HTML, e muito mais. Felizmente, o Swiftmailer cobre o tópico Criação de Mensagens em grande detalhe na sua documentação.
Tip
Vários outros artigos cookbook relacionados ao envio de e-mails estão disponíveis no Symfony2: