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/swiftmailer
Como 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.php
qual 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 attach
mé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