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.