• Categoria do post:Tecnologia
  • Tempo de leitura:8 minutos de leitura
Ads

O PHPMailer é uma popular classe PHP que envia e-mail autenticados, ou seja, é necessário de um servidor SMTP, um usuário e uma senha para enviar e-mails, isso garante que todos os e-mails enviados sejam legítimos.

Função mail() x PHPMailer

A função mail() do PHP é muito útil quando necessita enviar e-mail para o próprio servidor local no qual está hospedado o site, por exemplo, se o seu site possui o domínio minhaloja.com.br, a função mail() será muito eficiente para enviar e-mail para endereços @minhaloja.com.br desde que, os e-mail estejam criados no mesmo servidor da hospedagem.

No entanto, se você quer fazer envio de mensagens para outros servidores, a função mail() muito provavelmente será rejeitada pelo servidor do dentinário. Justamente por não ser um e-mail autenticado, o servidor do destinatário não poderá comprovar a legitimidade deste envio e irá classificar como SPAM.

Quando você autentica o envio do e-mail, o servidor do destinatário sabe, através dos cabeçalhos do e-mail, a origem do envio, o nome do servidor, o IP do servidor, o IP do envio, o agente de envio entre outras informações, portanto, as chances de um e-mail autenticado ser classificado como SPAM será quase zero.

Downlod do PHPMailer

  1. Faça o download da classe PHPMailer na página oficial do desenvolvedor disponível no gitHub: https://github.com/Synchro/PHPMailer. Se você nunca fez um download usando o GitHub, procure pelo botão Clone or Download e clique em Download ZIP.
  2. Descompacte o arquivo PHPMailer-master.zip
  3. Entre na pasta descompactada e renomeie a pasta PHPMailer-master para um nome mais amigável, recomendamos que renomeie para apenas phpmailer
  4. Publique a pasta phpmailer no seu servidor de hospedagem, ou, no seu servidor localhost caso tenha algum serviço de sendmail instalado.

Exemplo com um formulário de contato com PHPMailer

Vamos aplicar o PHPMailer no seguinte exemplo; um formulário de contato que irá enviar para um e-mail para o proprietário do site os dados preenchidos no formulário e uma mensagem de “muito obrigado” para o visitante do site.

  • Tenha em mãos os dados de autenticação da sua conta de e-mail, isso incluir saber o nome do servidor, a porta de envio SMTP (normalmente a 587), o usuário e a senha da conta que fará o envio.
  • Junto com a pasta phpmailer, crie um arquivo com o nome de envio.php, usando o seguinte código:
    <?php 
     $mail = new PHPMailer();
     $mail->IsSMTP(); // envia por SMTP 
     $mail->CharSet = 'UTF-8';
     $mail->True;
     $mail->Host = "smtp.seudominio.com.br"; // Servidor SMTP
     $mail->Port = 587; 
     $mail->SMTPAuth = true; // Caso o servidor SMTP precise de autenticação
     $mail->Username = "[email protected]"; // SMTP username
     $mail->Password = "senha"; // SMTP password
     $mail->From = "[email protected]"; // From
     $mail->FromName = "Sua Empresa" ; // Nome de quem envia o email
     $mail->AddAddress($mailDestino, $nome); // Email e nome de quem receberá //Responder
     $mail->WordWrap = 50; // Definir quebra de linha
     $mail->IsHTML = true ; // Enviar como HTML
     $mail->Subject = $assunto ; // Assunto
     $mail->Body = '<br/>' . $mensagem . '<br/>' ; //Corpo da mensagem caso seja HTML
     $mail->AltBody = "$mensagem" ; //PlainText, para caso quem receber o email não aceite o corpo HTML
    
    if(!$mail->Send()) // Envia o email
     { 
     echo "Erro no envio da mensagem";
     } 
    ?>
  • Salve o arquivo junto com a pasta phpmailer, mas não dentro dela, veja a imagem;
  • Crie o formulário de contato com o nome de contato.php usando o código a seguir;
    <html lang="pt-br"> 
    <head>
     <meta charset="utf-8">
     <title>Formulário de Contato do Blogson</title>
     <!--Bootstrap -->
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    </head>
    
    <body>
    <div class="container">
    
    <?php 
     if ($_POST) 
     {
     //Carrega as classes do PHPMailer
     include("./phpmailer/class.phpmailer.php"); 
     include("./phpmailer/class.smtp.php"); 
     
     //envia o e-mail para o visitante do site
     $mailDestino = $_POST['txtEmail']; 
     $nome = $_POST['txtNome']; 
     $mensagem = "Obrigado pelo seu contato, responderemos ASAP!";
     $assunto = "Obrigado pelo seu contato!";
     include("./envio.php");
     
     //envia o e-mail para o administrador do site
     $mailDestino = '[email protected]'; 
     $nome = 'Blogson - O Blog do Prof. Anderson'; 
     $assunto = "Mensagem recebida do site";
     $mensagem = "Recebemos uma mensagem no site <br/>
     <strong>Nome:</strong> $_POST[txtNome]<br/>
     <strong>e-mail:</strong> $_POST[txtEmail]<br/>
     <strong>mensagem:</strong> $_POST[txtMensagem]";
     include("./envio.php");
     }
    ?>
    
    <form method="POST" name="formContato">
    
    <label>Informe seu nome: </label>
     <input type="text" name="txtNome" placeholder="João" class="form-control" required>
    
     <label>Informe seu e-mail: </label>
     <input type="email" name="txtEmail" placeholder="[email protected]" class="form-control" required>
    
     <label>Deixe sua mensagem: </label>
     <textarea rows="6" class="form-control" name="txtMensagem"></textarea>
     <br/>
    
    <div style="text-align:center">
     <button type="submit" class="btn btn-default btn-lg"> Enviar Mensagem </button>
     </div>
     
     </form> 
    </div>
    </body>
    </html>
    
  • Salve o arquivo junto com o arquivo envio.php, A página ficará desta forma:
  • Prontinho! Se todas as configurações estiverem corretas, basta testar no seu servidor on-line.

Um visitante que possui uma conta no GMail receberá a mensagem de agradecimento da seguinte forma;

Já o administrador do site, que utiliza o cliente de e-mail Thunderbird receberá da seguinte forma;

Exemplo PHPMailer autenticando no GMail / GSuite.

Se você usa GMail ou é usuário do G Suite, e quiser autenticar seus e-mails através dele, basta acrescentar a linha $mail->SMTPSecure = “tls”; no arquivo envio.php, ficando;

<?php 
 $mail = new PHPMailer();
 $mail->IsSMTP(); 
 $mail->CharSet = 'UTF-8';
 $mail->True;
 $mail->Host = "smtp.gmail.com"; // Servidor SMTP
 $mail->SMTPSecure = "tls"; // conexão segura com TLS
 $mail->Port = 587; 
 $mail->SMTPAuth = true; // Caso o servidor SMTP precise de autenticação
 $mail->Username = "[email protected]"; // SMTP username
 $mail->Password = "senha"; // SMTP password
 $mail->From = "[email protected]"; // From
 $mail->FromName = "Sua Empresa" ; // Nome de quem envia o email
 $mail->AddAddress($mailDestino, $nome); // Email e nome de quem receberá //Responder
 $mail->WordWrap = 50; // Definir quebra de linha
 $mail->IsHTML = true ; // Enviar como HTML
 $mail->Subject = $assunto ; // Assunto
 $mail->Body = '<br/>' . $mensagem . '<br/>' ; //Corpo da mensagem caso seja HTML
 $mail->AltBody = "$mensagem" ; //PlainText, para caso quem receber o email não aceite o corpo HTML

if(!$mail->Send()) // Envia o email
 { 
 echo "Erro no envio da mensagem";
 } 
?>

Download do exemplo usando PHPMailer

O exemplo mostrado nesta publicação está disponível aqui no Blogson: 
https://www.blogson.com.br/wp-content/uploads/2020/02/exemplo-phpmailer-blogson.zip

Importante! Evite testar em localhost.

Este script funcionará bem em um servidor de hospedagem web. Caso tente executá-lo em localhost você poderá problemas para se conectar ao serviço de SMTP do seu provedor.

Uma forma de resolver isso é instalar o Fake SendMail. Após instalado, configure o php.ini, edite a linha sendmail_path indicando o caminho de instalação do Fake SendMail.

sendmail_path = "c:\SendMail\sendmail.exe -t"

 

Ads

Anderson Oliveira

Anderson Oliveira é desenvolvedor, escritor e docente no CEETPS - Centro Estadual de Educação Tecnologia de São Paulo. Atualmente trabalha na Administração Central do CPS e leciona aulas de programação na Etec Prof. Carmine Biagio Tundisi de Atibaia.