Documentação do Symfony - versão 3.1
Renderizada do repositório symfony-docs-pt-BR no Github
Quando você estiver criando uma aplicação que envia e-mails, muitas vezes não vai
desejar enviar os e-mails ao destinatário especificado, durante o
desenvolvimento. Se você estiver usando o SwiftmailerBundle
com o Symfony2,
poderá facilmente conseguir isso através de definições de configuração sem ter que
fazer quaisquer alterações no código da sua aplicação. Existem duas opções
principais quando se trata de manipulação de e-mails durante o desenvolvimento: (a) desativação do
envio de e-mails totalmente ou (b) o envio de todos os e-mails para um endereço
especificado.
Você pode desativar o envio de e-mails, definindo a opção disable_delivery
para true
. Este é o padrão para o ambiente test
na distribuição
Standard. Se você fizer isso especificamente na configuração test
, então os emails
não será enviados quando você executar testes, mas continuarão a ser enviados nos
ambientes prod
e dev
:
1 2 3 | # app/config/config_test.yml
swiftmailer:
disable_delivery: true
|
1 2 3 4 5 6 7 8 9 | <!-- app/config/config_test.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
disable-delivery="true" />
|
1 2 3 4 | // app/config/config_test.php
$container->loadFromExtension('swiftmailer', array(
'disable_delivery' => "true",
));
|
Se você também gostaria de desativar a entrega no ambiente dev
, simplesmente
adicione esta configuração ao arquivo config_dev.yml
.
Você também pode optar por enviar todos os emails para um endereço específico, em vez
do endereço atualmente especificado, ao enviar a mensagem. Isto pode ser feito
através da opção delivery_address
:
1 2 3 | # app/config/config_dev.yml
swiftmailer:
delivery_address: dev@example.com
|
1 2 3 4 5 6 7 8 9 | <!-- app/config/config_dev.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
delivery-address="dev@example.com" />
|
1 2 3 4 | // app/config/config_dev.php
$container->loadFromExtension('swiftmailer', array(
'delivery_address' => "dev@example.com",
));
|
Agora, suponha que você está enviando um email para recipient@example.com
.
1 2 3 4 5 6 7 8 9 10 11 12 | 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(...);
}
|
No ambiente dev
, o e-mail será enviado para dev@example.com
.
O Swiftmailer irá adicionar um cabeçalho extra para o e-mail, X-Swift-To
contendo
o endereço substituído, assim você ainda poderá visualizar para quem ele teria sido
enviado.
Note
Além do endereço to
, ele também irá parar os e-mails sendo
enviados para quaisquer endereços CC
e BCC
definidos. O SwiftMailer irá adicionar
cabeçalhos adicionais para o e-mail com os endereços substituídos neles.
Eles são X-Swift-Cc
e X-Swift-Bcc
para os endereços CC
e BCC
,
respectivamente.
Você pode visualizar quaisquer e-mails enviados por uma página quando estiver no ambiente dev
usando a Barra de Ferramentas para Debug Web. O ícone de e-mail na barra de ferramentas irá mostrar
quantos e-mails foram enviados. Se você clicar nele, um relatório mostrando os detalhes dos
e-mails será aberto.
Se você estiver enviando um e-mail e imediatamente executar um redirecionamento, você
precisará definir a opção intercept_redirects
para true
no arquivo config_dev.yml
para que possa ver o e-mail na barra de ferramentas de debug web antes de ser redirecionado.