Banco de dúvidas

Envio de e-mails usando o PHPMailer

A função mail() do PHP é a mais usada para envio de e-mails, mas tem limitações, como não ter suporte a mensagens em HTML ou inclusão de anexos. A classe PHPMailer, assim como a biblioteca Swift Mailer, surgiu para dar suporte a essas funções. Veja a seguir como usá-la em seu site.

Passo 1: o método sugerido de instalar o PHPMailer é pelo composer, que é uma ferramenta de instalação de bibliotecas do PHP e suas dependências. Siga para a pasta raiz da sua conta (a que fica acima da pasta public_html) e rode seguinte comando, via SSH na sua conta de hospedagem ou no prompt ou shell do seu computador local:

composer require phpmailer/phpmailer

O composer vai alterar ou criar os arquivos "composer.json" e "composer.lock", e colocará o PHPMailer dentro da pasta "vendor".

Passo 2: agora é só incluir o arquivo "vendor/autoload.php" para poder usar o PHPMailer em seus scripts PHP. Segue o exemplo de código onde se utiliza a classe para enviar um e-mail em HTML com anexo:

<?php
// os comandos "use" abaixo devem ficar no início do script
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

// carregar o autoload do composer
require_once("../vendor/autoload.php");

// instanciando a classe (true habilita as exceções)
$mail = new PHPMailer(true);

try {
    // configura para envio via SMTP
    $mail->isSMTP();
    // servidor SMTP local
    $mail->Host = 'localhost';
    // localhost não precisa de autenticação SMTP
    $mail->SMTPAuth = false;
    // também não precisa de criptografia
    $mail->SMTPSecure = false;
    // porta do serviço SMTP
    $mail->Port = 25;

    // remetente
    $mail->setFrom('fulano@xyzparafusos.com.br', 'Fulano da Silva');
    // destinatário
    $mail->addAddress('sicrano@abcferramentas.com.br', 'Sicrano Souza');

    // anexo (opcional)
    $mail->addAttachment('plano.zip');
    // e-mail no formato HTML
    $mail->isHTML(true);

    // assunto
    $mail->Subject = 'Plano de negócios';
    // corpo da mensagem em HTML
    $mail->Body = 'Plano de negócios em anexo. <b>Me avise ao receber!</b>';
    // corpo da mensagem em texto comum, para clientes de e-mail sem suporte a HTML
    $mail->AltBody = 'Plano de negócios em anexo. Entre em contato ao receber!';

    $mail->send();
    echo 'A mensagem foi enviada!';
}
catch (Exception $e)
{
    echo 'A mensagem não pôde ser enviada: ' . $mail->ErrorInfo;
}
?>

Use servidor de e-mails "localhost" e porta "25", não é necessário fazer autenticação.

Este artigo foi útil para você?