(16) 981791110 contato@policast.studio

O que é o SwiftmailerBundle?

O SwiftmailerBundle é uma biblioteca de correio eletrônico que permite o envio de e-mails de forma fácil e rápida. O Symfony é um dos principais frameworks PHP e oferece muitas funcionalidades para desenvolvimento de projetos web. O SwiftmailerBundle é um dos seus principais pacotes, que pode ser facilmente integrado com projetos que usam o Symfony.

Como instalar o SwiftmailerBundle em um projeto Symfony?

Para instalar o SwiftmailerBundle em seu projeto Symfony, adicione o seguinte código ao arquivo “composer.json”:


"require": {
"swiftmailer/swiftmailer-bundle": "~2.1"
}

Em seguida, execute o comando “php composer.phar update” para instalar o pacote no diretório “vendor” do seu projeto.

Como configurar o SwiftmailerBundle no Symfony?

Para configurar o SwiftmailerBundle em seu projeto Symfony, abra o arquivo “app/config/config.yml” e adicione as seguintes informações:


swiftmailer:
transport: smtp
host: seu_servidor_smtp
username: seu_login_smtp
password: sua_senha_smtp
spool: {type: memory}

No exemplo acima, o Swiftmailer foi configurado para usar o protocolo SMTP para envio de e-mails. O host, login e senha devem ser substituídos pelas informações do seu servidor SMTP. Além disso, o “spool” define como os e-mails serão armazenados no servidor antes do envio.

Como enviar um e-mail usando o SwiftmailerBundle no Symfony?

Para enviar um e-mail usando o SwiftmailerBundle em seu projeto Symfony, você precisa criar uma instância do serviço “mailer” e usar o método “send()” para enviar o e-mail:


// Criando uma instância do serviço "mailer"
$mailer = $this->get('mailer');

// Criando uma mensagem de e-mail
$message = Swift_Message::newInstance()
->setSubject('Assunto do e-mail')
->setFrom('seuemail@seuservidor.com')
->setTo('destinatario@seuservidor.com')
->setBody('Conteúdo do e-mail');

// Enviando a mensagem de e-mail
$mailer->send($message);

Como enviar um e-mail usando uma view no SwiftmailerBundle?

Para enviar um e-mail usando uma view no SwiftmailerBundle em seu projeto Symfony, você precisa criar um arquivo do tipo “.html.twig” na pasta “app/Resources/views”. Em seguida, você precisa criar um arquivo do tipo “.txt.twig” na mesma pasta, com o conteúdo do e-mail em formato de texto. Finalmente, você precisa instanciar o serviço “mailer” e configurá-lo com o assunto do e-mail e o endereço do remetente e destinatário:


// Criando uma instância do serviço "templating"
$templating = $this->container->get('templating');

// Renderizando a view do e-mail
$body = $templating->render(
'exemplo_email.html.twig',
array('nome' => $nome, 'mensagem' => $mensagem)
);

// Criando uma mensagem de e-mail
$message = Swift_Message::newInstance()
->setSubject('Assunto do e-mail')
->setFrom('seuemail@seuservidor.com')
->setTo('destinatario@seuservidor.com')
->setBody($body, 'text/html')
->addPart($body, 'text/plain');

// Enviando a mensagem de e-mail
$mailer->send($message);

Como adicionar anexos em um e-mail no SwiftmailerBundle?

Para adicionar anexos em um e-mail no SwiftmailerBundle em seu projeto Symfony, você precisa instanciar o serviço “mailer” e configurá-lo com o assunto do e-mail e o endereço do remetente e destinatário. Em seguida, você precisa adicionar o anexo usando o método “attach()”:


// Criando uma instância do serviço "mailer"
$mailer = $this->get('mailer');

// Criando uma mensagem de e-mail
$message = Swift_Message::newInstance()
->setSubject('Assunto do e-mail')
->setFrom('seuemail@seuservidor.com')
->setTo('destinatario@seuservidor.com')
->setBody('Conteúdo do e-mail')
->attach(Swift_Attachment::fromPath('caminho/para/o/arquivo'));

// Enviando a mensagem de e-mail
$mailer->send($message);

Como enviar um e-mail para múltiplos destinatários no SwiftmailerBundle?

Para enviar um e-mail para múltiplos destinatários no SwiftmailerBundle em seu projeto Symfony, você precisa instanciar o serviço “mailer” e configurá-lo com o assunto do e-mail e o endereço do remetente e todos os destinatários:


// Criando uma instância do serviço "mailer"
$mailer = $this->get('mailer');

// Criando uma mensagem de e-mail
$message = Swift_Message::newInstance()
->setSubject('Assunto do e-mail')
->setFrom('seuemail@seuservidor.com')
->setTo(array('destinatario1@seuservidor.com', 'destinatario2@seuservidor.com'))
->setBody('Conteúdo do e-mail');

// Enviando a mensagem de e-mail
$mailer->send($message);

Como enviar um e-mail com cópia e cópia oculta no SwiftmailerBundle?

Para enviar um e-mail com cópia e cópia oculta no SwiftmailerBundle em seu projeto Symfony, você precisa instanciar o serviço “mailer” e configurá-lo com o assunto do e-mail, o endereço do remetente e destinatário. Em seguida, você precisa adicionar as cópias usando os métodos “setCc()” e “setBcc()”:


// Criando uma instância do serviço "mailer"
$mailer = $this->get('mailer');

// Criando uma mensagem de e-mail
$message = Swift_Message::newInstance()
->setSubject('Assunto do e-mail')
->setFrom('seuemail@seuservidor.com')
->setTo('destinatario@seuservidor.com')
->setCc('copia@seuservidor.com')
->setBcc('copiaoculta@seuservidor.com')
->setBody('Conteúdo do e-mail');

// Enviando a mensagem de e-mail
$mailer->send($message);

Como usar templates personalizados para enviar e-mails no SwiftmailerBundle?

Para usar templates personalizados para enviar e-mails no SwiftmailerBundle em seu projeto Symfony, você precisa criar um arquivo do tipo “.html.twig” na pasta “app/Resources/views” e preenchê-lo com o conteúdo do e-mail. Em seguida, você precisa instanciar o serviço “mailer” e configurá-lo com o assunto do e-mail, o endereço do remetente, destinatário e o corpo do e-mail usando o método “setBody()”:


// Criando uma instância do serviço "mailer"
$mailer = $this->get('mailer');

// Renderizando a view do e-mail
$body = $this->renderView(
'exemplo_email.html.twig',
array('nome' => $nome, 'mensagem' => $mensagem)
);

// Criando uma mensagem de e-mail
$message = Swift_Message::newInstance()
->setSubject('Assunto do e-mail')
->setFrom('seuemail@seuservidor.com')
->setTo('destinatario@seuservidor.com')
->setBody($body, 'text/html');

// Enviando a mensagem de e-mail
$mailer->send($message);

Como enviar e-mails em background usando o SwiftmailerBundle?

Para enviar e-mails em background usando o SwiftmailerBundle em seu projeto Symfony, você precisa configurar o “spool” no arquivo “app/config/config.yml”:


swiftmailer:
transport: smtp
host: seu_servidor_smtp
username: seu_login_smtp
password: sua_senha_smtp
spool: { type: memory }

Isso fará com que os e-mails sejam armazenados na memória ao invés de serem enviados imediatamente. Em seguida, você precisa criar um comando para enviar estes e-mails. Para isso, crie um arquivo com o seguinte conteúdo:


use SymfonyBundleFrameworkBundleCommandContainerAwareCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;

class EnviaEmailsCommand extends ContainerAwareCommand
{
protected function configure()
{
$this
->setName('envia-emails')
->setDescription('Envia os emails pendentes');
}

protected function execute(InputInterface $input, OutputInterface $output)
{
$mailer = $this->getContainer()->get('swiftmailer.mailer');
$transport = $mailer->getTransport();
$spool = $transport->getSpool();
$spool->flushQueue($transport);
}
}

Por fim, execute o seguinte comando para enviar os e-mails em background:


php app/console swiftmailer:spool:send --env=prod