Skip to content

Como enviar e-mail a partir de um script PHP usando autenticação SMTP

17 de junho de 2021

O PHP correspondência() A função é simples, fácil de usar e funciona muito bem, mas também é extremamente inflexível. Se você deseja especificar um servidor SMTP para o script usar ou usar autenticação SMTP, você está sem sorte. Para superar essas limitações e enviar e-mail de seu script PHP usando autenticação SMTP, você precisará recorrer a uma classe PHP como PHPmailer ou o pacote PEAR Mail.

Enviando e-mail com a função PHP Mail

Quando você usa o PHP correspondência() função, você acaba enviando e-mail diretamente de seu servidor web em vez de seu servidor de e-mail. Se você tiver um servidor de e-mail por meio de seu host da web, ou mesmo um servidor de e-mail com um host diferente, geralmente é melhor enviar e-mail por meio dele. O problema é que o PHP correspondência() função não fornece nenhuma maneira embutida de enviar e-mail via SMTP. Se quiser abrir essa funcionalidade, você precisará instalar uma classe PHP adicional. Aqui estão algumas opções que funcionam:

  • PHPmailer
  • SwiftMailer
  • Zend_Mail
  • XpertMailer
  • PEAR Mail

Mostraremos como usar o PEAR Mail, mas você pode usar qualquer classe que suporte SMTP.

Hero Images / Getty
Se o seu host da web já tiver uma ou mais dessas classes instaladas, provavelmente há tutoriais relacionados à sua situação. Em caso afirmativo, vá em frente e use a classe a que você tem acesso. Use este método apenas se estiver usando PHP para criar seus próprios formulários de e-mail personalizados. Se você estiver usando um sistema de gerenciamento de conteúdo (CMS) como o WordPress, procure um plug-in ou funcionalidade integrada para enviar e-mail via SMTP, em vez de tentar criar o seu próprio.

Como usar o PEAR para enviar e-mail via SMTP

  1. Certifique-se de que seu domínio esteja apontado para os registros MX (Mail Exchange) do host do servidor de e-mail e anote o nome do servidor de e-mail. Por exemplo, pode ser mail.yourdomain.net ou smtp.yourdomain.net.

  2. Verifique se o PEAR Mail já está instalado em seu servidor de e-mail.

  3. Se o PEAR Mail não estiver instalado, consulte seu host de webmail para obter instruções específicas sobre como instalá-lo.

  4. Depois de instalar o PEAR Mail, modifique um dos arquivos PHP de exemplo nas seções a seguir para atender às suas necessidades.

Exemplo PEAR Mail PHP Script para SMTP Mail

Você pode criar seu próprio script do zero, se desejar, ou modificar o exemplo a seguir de acordo com sua preferência. Certifique-se de inserir o nome do seu servidor de web mail na variável de host e use suas informações de login para o host de web mail nos campos de nome de usuário e senha. require_once “Mail.php”;
$ from = “Nome do remetente “;
$ to = “Nome do destinatário “;
$ subject = “Assunto aqui:”;
$ body = “qualquer mensagem que você quiser”;
$ host = “yourmailhost.com”;
$ username = “seu nome de usuário ou e-mail”;
$ password = “sua senha”;
$ headers = array (‘From’ => $ from,
‘Para’ => $ para,
‘Assunto’ => $ assunto);
$ smtp = Mail :: factory (‘smtp’,
array (‘host’ => $ host,
‘auth’ => true,
‘username’ => $ username,
‘senha’ => $ senha));
$ mail = $ smtp-> send ($ to, $ headers, $ body);
if (PEAR :: isError ($ mail)) {
echo (“

“. $ mail-> getMessage (). “

“);
} senão {
echo (“

Mensagem enviada com sucesso!

“);
}
?>

Exemplo PEAR Mail PHP Script para autenticação SMTP e criptografia SSL

Se quiser usar autenticação SMTP e criptografia SSL, você terá que fazer algumas modificações no exemplo anterior. Você precisará apontar a variável de host para seu servidor de e-mail SSL e também especificar um número de porta como 25, 465, 587, 2525 ou 8025. Entre em contato com seu host de webmail para obter mais informações se não conseguir descobrir qual porta usar usar. require_once “Mail.php”;
$ from = “Nome do remetente “;
$ to = “Nome do destinatário “;
$ subject = “Assunto aqui:”;
$ body = “qualquer mensagem que você quiser”;
$ host = “ssl: //yourmailhost.com”;
$ port = “587”;
$ username = “seu nome de usuário ou e-mail”;
$ password = “sua senha”;
$ headers = array (‘From’ => $ from,
‘Para’ => $ para,
‘Assunto’ => $ assunto);
$ smtp = Mail :: factory (‘smtp’,
array (‘host’ => $ host,
‘port’ => $ port,
‘auth’ => true,
‘username’ => $ username,
‘senha’ => $ senha));
$ mail = $ smtp-> send ($ to, $ headers, $ body);
if (PEAR :: isError ($ mail)) {
echo (“

“. $ mail-> getMessage (). “

“);
} senão {
echo (“

Mensagem enviada com sucesso!

“);
}
?>