SMTP autenticado no PHP

Como mandar um e-mail utilizando servidor de SMTP com autenticação pelo PHP.

SMTP autenticado no PHP

Para enviar e-mails pelo PHP iremos utilizar das classes prontas que irão encurtar o nosso trabalho.

Clique nos link abaixo para baixar:

PHPMailer Class

Descompacte o arquivo e cole as duas classes no diretório aonde está o arquivo PHP que irá enviar os e-mails.

Código fonte de exemplo

Crie um arquivo PHP de teste no mesmo diretório aonde está as duas classes.

Logo no inicio do arquivo vamos utilizar a função “require_once” para incluirmos a classe “class.phpmailer.php”.

require_once("class.phpmailer.php");

Configurando PHPMailer

Agora vamos configurar a nossa classe PHPMailer para utilização.

Primeiro você deve substituir os valores de teste nas variáveis abaixo com os dados reais do servidor SMTP que será utilizado.

$servidor_smtp = "smtp.teste.com.br";
$porta = "587";
$usuario = "[email protected]";
$senha = "123456";

Observação: Por padrão, normalmente a porta utilizada nos servidores de SMTP é a “587”

Agora vamos instanciar a classe PHPMailer.

$mail = new PHPMailer();
$mail->IsSMTP();		
$mail->SMTPDebug = 1;		
$mail->SMTPAuth = true;		
$mail->SMTPSecure = 'tls';	
$mail->Host = $servidor_smtp;	
$mail->Port = $porta;  		
$mail->Username = $usuario;
$mail->Password = $senha;

No código acima, além de passar os dados do SMTP utilizo as seguintes configurações

Ativo o SMTP no objeto

$mail->IsSMTP();

Modo “debug”, informe 1 para erros e mensagens ou número 2 para apenas mensagens

$mail->SMTPDebug = 1;

Informe que a autenticação será necessária no servidor de SMTP.

$mail->SMTPAuth = true;

Modo de segurança que será utilizado, podendo ser “tls” ou “ssl”.

$mail->SMTPSecure = "tls";

Definindo conteúdo, remetente e ddestinatário do email

Substituí os valores da variáveis abaixo com os dados que você deseja enviar.

$de = "[email protected]";
$de_nome = "nome remetente";
$assunto = "assunto de teste";
$corpo = "email de teste";
$para = "[email protected]";

$mail->SetFrom($de, $de_nome);
$mail->Subject = $assunto;
$mail->Body = $corpo;
$mail->AddAddress($para);

Observações: Em alguns servidores de SMTP, por questões de segurança e anti-spam, o usuário utilizado na autenticação (email) deverá ser o mesmo utilizado no “de” da função “SetFrom()”.

Enviando o e-mail

Utilize o código abaixo para enviar o e-mail

if($mail->Send()) {
 // enviado
} else {			
 // ocorreu um erro
}

Você pode adicionar as validações no código acima.

Verificando os erros

Observação: no modo “debug” com o valor “2” as mensagens de erro serão incluídas diretamente no arquivo.

Caso os e-mails não estejam sendo enviados e nenhuma mensagem de erro está sendo exibida leve em consideração os seguintes pontos:

  • congestionamento no servidor de e-mail
  • o e-mail está sendo enviado porém está caindo na caixa de spam ou black list
  • valide se os dados do destinatário estão corretos
  • o servidor aonde está rodando seu arquivo PHP está bloqueando o envio do email (por exemplo: Godaddy não permite o envio de e-mails utilizando servidores de SMTP externos).

Código fonte completo

/* Configurações */
$servidor_smtp = "smtp.teste.com.br";
$porta = "587";
$usuario = "[email protected]";
$senha = "123456";

$mail = new PHPMailer();
$mail->IsSMTP();		
$mail->SMTPDebug = 1;		
$mail->SMTPAuth = true;		
$mail->SMTPSecure = 'tls';	
$mail->Host = $servidor_smtp;	
$mail->Port = $porta;  		
$mail->Username = $usuario;
$mail->Password = $senha;


/* Conteúdo e destinatario */
$de = "[email protected]";
$de_nome = "nome remetente";
$assunto = "assunto de teste";
$corpo = "email de teste";
$para = "[email protected]";

$mail->SetFrom($de, $de_nome);
$mail->Subject = $assunto;
$mail->Body = $corpo;
$mail->AddAddress($para);

if($mail->Send()) {
 // email foi enviado
} else {			
 // ocorreu um erro
}

 

 

Resumo
Como enviar um e-mail utilizando um servidor de SMTP autenticado no PHP
Nome do Artigo
Como enviar um e-mail utilizando um servidor de SMTP autenticado no PHP
Descrição
Enviando um e-mail no PHP por um servidor de smtp com autenticação, utilizando a classe "PHPMailer", no post está incluso código fonte de exemplo com as configurações necessárias
Autor
Editor
Roger Mauricio Takemiya
Logo do Editor

Dúvidas? Faça um comentário logo abaixo ou envie uma mensagem clicando aqui.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *