Enviar e-mail usando o servidor SMTP do Gmail a partir de script PHP
O e-mail desempenha um papel importante no site. Todo site geralmente precisa enviar e-mails aos usuários. Esses e-mails podem ser enviados da página de contato, newsletter, formulário de inscrição, etc.
PHP fornece uma mail()
função que é usada para enviar um e-mail. Mas existem limitações ao usar o mail()
método. Você não pode enviar e-mail de um servidor de desenvolvimento local. Outra desvantagem é que há uma grande possibilidade de seu e-mail acabar em um Spam.
Na maioria dos casos, o mail()
método ainda não envia um e-mail. Isso pode ser devido à configuração incorreta do servidor ou outra coisa.
Para sair desses problemas ou limitações, pode-se usar o servidor SMTP para enviar os e-mails.
Neste artigo, estudamos como usar o PHPMailer e o servidor SMTP do Gmail para enviar e-mails.
Instalação
Você primeiro precisa instalar a biblioteca PHPMailer em seu projeto. A maneira recomendada de instalar uma biblioteca é por meio do Composer.
Abra o prompt de comando no diretório raiz do seu projeto e execute o comando abaixo.
composer require phpmailer/phpmailer
Como estamos usando o SMTP do Gmail, você precisa alterar algumas configurações da sua conta do Google. Faça login em sua conta do Google e clique em Minha conta. Quando estiver na página Minha conta, 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.
Depois disso, precisamos escrever um código que envia um e-mail usando a biblioteca PHPMailer e o servidor SMTP do Gmail.
Script PHP para enviar e-mail usando o servidor SMTP do Gmail
Abra seu arquivo PHP onde você precisa escrever um código para e-mails. Por exemplo, estou assumindo que você tem um sendemail.php
arquivo no diretório raiz.
sendemail.php
<?php
//Import PHPMailer classes into the global namespace
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require_once 'vendor/autoload.php';
$mail = new PHPMailer(true);
?>
No código acima, incluí o ambiente da biblioteca PHPMailer no arquivo PHP.
Em seguida, para enviar e-mails usando o PHPMailer, o usuário precisa passar o endereço do servidor SMTP do Gmail, a porta SMTP do Gmail e a autenticação SMTP (que nada mais é do que seu nome de usuário e senha de uma conta do Google).
$mail->isSMTP();
$mail->Host = 'smtp.googlemail.com'; //gmail SMTP server
$mail->SMTPAuth = true;
$mail->Username = 'GMAIL_USERNAME'; //username
$mail->Password = 'GMAIL_PASSWORD'; //password
$mail->SMTPSecure = 'ssl';
$mail->Port = 465; //SMTP port
É isso! Você concluiu a configuração. Agora, você está pronto para enviar um e-mail a um usuário.
$mail->setFrom('FROM_EMAIL_ADDRESS', 'FROM_NAME');
$mail->addAddress('RECEPIENT_EMAIL_ADDRESS', 'RECEPIENT_NAME');
$mail->isHTML(true);
$mail->Subject = 'Email subject';
$mail->Body = '<b>Email Body</b>';
$mail->send();
echo 'Message has been sent';
Substitua os marcadores de posição por valores reais. Execute este arquivo em um navegador e seu e-mail deve ser enviado no endereço de e-mail do destinatário.
Envio de anexos em um e-mail
Usando a biblioteca do PHPMailer, pode-se enviar um ou vários anexos em um e-mail. Tudo o que você precisa fazer é passar um caminho de diretório de seus anexos para o método da addAttachment
seguinte maneira.
$mail->addAttachment(__DIR__. '/attachment1.png');
$mail->addAttachment(__DIR__. '/attachment2.jpg');
Nosso código final é o seguinte.
sendemail.php
<?php
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require_once "vendor/autoload.php";
require_once "constants.php";
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.googlemail.com'; //gmail SMTP server
$mail->SMTPAuth = true;
$mail->Username = GMAIL_USERNAME; //username
$mail->Password = GMAIL_PASSWORD; //password
$mail->SMTPSecure = 'ssl';
$mail->Port = 465; //smtp port
$mail->setFrom('FROM_EMAIL_ADDRESS', 'FROM_NAME');
$mail->addAddress('RECEPIENT_EMAIL_ADDRESS', 'RECEPIENT_NAME');
$mail->addAttachment(__DIR__. '/attachment1.png');
$mail->addAttachment(__DIR__. '/attachment2.png');
$mail->isHTML(true);
$mail->Subject = 'Email Subject';
$mail->Body = '<b>Email Body</b>';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: '. $mail->ErrorInfo;
}
?>
Espero que você entenda como enviar e-mail usando o servidor SMTP do Gmail a partir de um script PHP. Por favor, compartilhe seus pensamentos e sugestões em um comentário abaixo.
Artigos relacionados
- Enviando e-mail via servidor SMTP do Gmail no Laravel
- Enviar e-mail usando o servidor SMTP do Gmail e a biblioteca Swift Mailer
- Enviar e-mail usando Mailjet em PHP