Enviar e-mail usando o servidor SMTP do Gmail e a biblioteca Swift Mailer
Quer enviar seus e-mails usando o servidor SMTP do Gmail? Quando você usa o servidor SMTP para seus e-mails, há uma grande chance de seus e-mails irem para a caixa de entrada do usuário e não para o spam. O servidor SMTP impede que seus e-mails sejam marcados como spam. Neste artigo, estudamos como enviar e-mail usando o servidor SMTP do Gmail e a biblioteca Swift Mailer.
Como proprietário de um site, você sempre deseja que seu e-mail vá direto para a caixa de entrada do usuário e não para o spam ou lixo eletrônico. Isso aumenta a probabilidade de o usuário ler seu e-mail e realizar a ação que deseja.
Por que precisa usar o servidor SMTP?
Para um site, é normal ter um formulário que envia um e-mail para usuários ou administradores. Pode ser seu boletim informativo, formulário de contato ou processo de registro, onde você precisa enviar um e-mail como um agradecimento.
PHP fornece uma mail()função para enviar e-mails. No entanto, se o seu servidor não definir as configurações de e-mail corretamente, esse método não funcionará. Outra possibilidade é quando você envia e-mails usando o mail()método, pode acabar em spam.
Para superar essas 2 situações, você deve usar o servidor SMTP para o envio de seus e-mails.
Usando a biblioteca Swift Mailer, o usuário pode usar qualquer servidor SMTP como Gmail, Sendgrid, Mandrill ou seu próprio servidor SMTP de hospedagem para enviar os e-mails. Neste tutorial, escolho um servidor SMTP do Gmail.
Dito isso, vamos dar uma olhada em como usar a biblioteca Swift Mailer para enviar e-mails.
Instalação do Swift Mailer
Para usar a biblioteca Swift Mailer, você deve ter o PHP versão 7.2 ou superior em seu servidor. Se você estiver usando a versão mais antiga, atualize-a para a versão mais recente do PHP. A maioria dos provedores de hospedagem, como o Bluehost, atualizam a versão do PHP mediante solicitação. Você não precisa investir seu tempo para atualizar a versão.
Indo em frente, eu recomendo usar o Composer para instalar a biblioteca Swift Mailer. Abra o terminal no diretório raiz do seu projeto e execute o comando:
composer require swiftmailer/swiftmailerComo usaremos o SMTP do Gmail, você precisa alterar algumas configurações em sua conta do Google. Faça login em sua conta do Google e clique em Conta. Quando estiver na página da Conta do Google, clique em Segurança. Role para baixo até a parte inferior e você encontrará as configurações de ‘Acesso de aplicativo menos seguro’. Defina-o como ON.
Enviar e-mail usando o servidor SMTP do Gmail e a biblioteca Swift Mailer
Nesta fase, você está pronto com a biblioteca do Swift Mailer e também alterou as configurações da conta do Gmail. Agora, você está pronto para ir em frente.
Digamos que você tenha um arquivo no sendmail.phpqual precisa escrever um código que envia e-mails. Escreva o código abaixo em seu arquivo PHP.
sendmail.php
<?php
require_once 'vendor/autoload.php';
try {
// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.googlemail.com', 465, 'ssl'))
->setUsername('YOUR_GMAIL_USERNAME')
->setPassword('YOUR_GMAIL_PASSWORD')
;
// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
// Create a message
$body = 'Hello, <p>Email sent through <span style="color:red;">Swift Mailer</span>.</p>';
$message = (new Swift_Message('Email Through Swift Mailer'))
->setFrom(['FROM_EMAIL_ADDRESS' => 'FROM_NAME'])
->setTo(['RECEPIENT_1_EMAIL_ADDRESS'])
->setCc(['RECEPIENT_2_EMAIL_ADDRESS'])
->setBcc(['RECEPIENT_3_EMAIL_ADDRESS'])
->setBody($body)
->setContentType('text/html')
;
// Send the message
$mailer->send($message);
echo 'Email has been sent.';
} catch(Exception $e) {
echo $e->getMessage();
}No código acima, passei os valores abaixo para as configurações do servidor SMTP do Gmail.
- Endereço do servidor SMTP do Google: smtp.googlemail.com
- Porta SMTP do Gmail: 465
- Criptografia: ssl
Além desses valores, você precisa alterar outros marcadores de posição, como YOUR_GMAIL_USERNAME, YOUR_GMAIL_PASSWORD, etc.
Depois de substituir todos os valores, execute este arquivo em um navegador. Você deve receber o e-mail na caixa de entrada, não no spam.
Envie um ou vários anexos em um e-mail
Às vezes, pode ser necessário enviar anexos por e-mail. Usando o Swift Mailer, você pode enviar um ou vários anexos da seguinte forma:
$message->attach(Swift_Attachment::fromPath(__DIR__. '/sample.png')); //absolute path for your attachment
$message->attach(Swift_Attachment::fromPath(__DIR__. '/sample-ebook.pdf'));Tudo que você precisa fazer é usar o attachmétodo e passar o caminho absoluto do arquivo que você precisa enviar como um anexo. Presumo que você precise enviar ‘sample.png’ e ‘sample-ebook.pdf’ como anexos.
Portanto, nosso código final é o seguinte.
sendmail.php
<?php
require_once 'vendor/autoload.php';
try {
// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.googlemail.com', 465, 'ssl'))
->setUsername('YOUR_GMAIL_USERNAME')
->setPassword('YOUR_GMAIL_PASSWORD')
;
// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
// Create a message
$body = 'Hello, <p>Email sent through <span style="color:red;">Swift Mailer</span>.</p>';
$message = (new Swift_Message('Email Through Swift Mailer'))
->setFrom(['FROM_EMAIL_ADDRESS' => 'FROM_NAME'])
->setTo(['RECEPIENT_1_EMAIL_ADDRESS'])
->setCc(['RECEPIENT_2_EMAIL_ADDRESS'])
->setBcc(['RECEPIENT_3_EMAIL_ADDRESS'])
->setBody($body)
->setContentType('text/html')
->attach(Swift_Attachment::fromPath(__DIR__. '/sample.png'))
->attach(Swift_Attachment::fromPath(__DIR__. '/sample-ebook.pdf'))
;
// Send the message
$mailer->send($message);
echo 'Email has been sent.';
} catch(Exception $e) {
echo $e->getMessage();
}É tudo sobre como enviar e-mail por meio da biblioteca do Swift Mailer. Você também pode usar o Symfony Swift Mailer para enviar mensagens através de alguns servidores SMTP como Mailgun, Mandrill, etc. Gostaria de ouvir sua opinião e sugestões na seção de comentários abaixo.
Artigos relacionados
- Enviar e-mail usando o servidor SMTP do Gmail a partir de script PHP
- Como enviar e-mail WordPress usando o servidor SMTP
- Enviando e-mail via servidor SMTP do Gmail no Laravel

