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.