Atualizado em 30 de Agosto de 2013

Como Enviar Email Autenticado com PHP

Olá pessoal,

Todos nos já sabemos como enviar email com php, porém alguns hosts só permitem que sejam enviados os email que são autenticados pelo servidor.

Para realizar este procedimento precisamos fazer esta autenticação antes de enviar o email. Neste post vamos ver como enviar email autenticado com PHP, fazendo uso da classe PHPMailer.

O PHPMailer é uma classe pronta para o envio de emails através das conexões SMTP e POP3, para baixar a classe Clique aqui.

Vamos ver um exemplo usando a classe PHPMailer para envio de emails autenticados:

<?php
// Chame o arquivo com as Classes do PHPMailer
require_once('phpmailer/class.phpmailer.php');

// Instância a classe PHPMailer
$mail = new PHPMailer();

// Configuração dos dados do servidor e tipo de conexão (Estes dados você obtem com seu host)
$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->Host = "smtp.seudominio.com.br"; // Endereço do servidor SMTP
$mail->SMTPAuth = true; // Autenticação (True: Se o email será autenticado ou False: se o Email não será autenticado)
$mail->Username = 'email@seudominio.com.br'; // Usuário do servidor SMTP
$mail->Password = 'sua senha'; // A Senha do email indicado acima

// Remetente (Identificação que será mostrada para quem receber o email)
$mail->From = "e-mail@seudominio.com.br";
$mail->FromName = "Nome do Remetente ";

// Destinatário
$mail->AddAddress('destinatario@dominio.com.br', 'Nome do Destinatário');

// Opcional (Se quiser enviar cópia do email)
$mail->AddCC('copia@dominio.com.br', 'Copia');
$mail->AddBCC('CopiaOculta@dominio.com.br', 'Copia Oculta');

// Define tipo de Mensagem que vai ser enviado
$mail->IsHTML(true); // Define que o e-mail será enviado como HTML

// Assunto e Mensagem do email
$mail->Subject = "Mensagem Teste"; // Assunto da mensagem
$mail->Body = 'Aqui vem a mensagem a ser enviada, em HTML ou não.';

// Envia a Mensagem
$enviado = $mail->Send();

// Verifica se o email foi enviado
if($enviado)
 {
  echo "E-mail enviado com sucesso!";
 }
else
 {
  echo "Não foi possível enviar o e-mail, devido ao erro de: ".$mail->ErrorInfo;
 }
?>

No script já tem os comentários explicando cada função e parâmetros. Quaisquer dúvidas cometem pessoal.

Para fazer download do script Clique aqui.


Curta a nossa página



E isso aí pessoal, até a próxima.

Comentários

Sua foto do perfil

Charlies

aqui esta dando o seguinte erro:

Language string failed to load: from_failed (meu email)

se puderem me ajudar fico muito agradecido :)

27 de Outubro de 2015 - 18:23

Sua foto do perfil

Mauricio Programador

Olá Charlies,

Faça download do exemplo e teste em seu servidor para ver se ele funciona.

Caso funcione o problema pode ser na plataforma que esta usando, pois este erro que esta lhe mostrando não me parece ser do PHPMailer.

Abraço.

30 de Outubro de 2015 - 14:55

Sua foto do perfil

Elton

05 de Abril de 2015 - 15:51

Sua foto do perfil

Mauricio Programador

Olá Elton,

Não sei o que pode estar ocorrendo ai, mas para fazer esta ação, basta usar o código que você mesmo indicou:

$mail->addReplyTo('contato@email.com.br', 'Teste');

Teste digitando sem usar variáveis, para ver se as variáveis realmente estão trazendo os valores certos.

Abraço.

06 de Abril de 2015 - 09:30

Sua foto do perfil

Elton

Achei a solução, Mauricio. Testei e deu tudo certo. Deixo aqui a solução para ajudar outras pessoas. Basta utilizar esse código:

$mail->AddReplyTo("$email");

Assim o e-mail enviado no formulário no campo "email" será usado para o ReplyTo. Na prática, ao receber o e-mail e clicar em "Responder" a resposta será enviada para o e-mail do visitante e também para o e-mail padrão (SetFrom) usado no código para envio.

Resumindo... Eu usei estes códigos para configurar o recebimento do formulário e funcionou ok:

$mail->SetFrom('email@email.com.br'); // Deve ser o mesmo e-mail usado como Username na autenticação do servidor SMTP
$mail->FromName = utf8_decode("$nome"); // Mostra o nome da pessoa cadastrado no formulário
$mail->AddAddress('email@email.com.br', 'Nome do Destinatário'); // Define o destino da mensagem
$mail->AddCC('emailcopia@email.com.br', 'Nome da Cópia'); // Envia uma cópia
$mail->AddBCC('emailcopiaoculta@email.com.br', 'Nome da Cópia Oculta'); // Envia uma cópia oculta
$mail->AddReplyTo("$email"); // Envia resposta para o e-mail do visitante
$mail->Subject = 'Formulário de contato'; // Assunto do formulário

07 de Abril de 2015 - 09:45

Sua foto do perfil

Mauricio Programador

Legal Elton,

obrigado por compartilhar conosco.

Grande abraço.

07 de Abril de 2015 - 09:45

Sua foto do perfil

Celso Redes

Ola Mauricio, eu adicionei "$mail->Port = 587";
e funcionou 100%.

Obrigado por compartilhar conhecimento.

Celso Redes

02 de Março de 2015 - 10:49

Sua foto do perfil

Mauricio Programador

Olá Celso,

legal a sua dica, alguns servidor hoje em dia estão pedindo isso como obrigatório.

Grande Abraço.

02 de Março de 2015 - 12:40

Sua foto do perfil

CHARLES CORREA

17 de Março de 2014 - 21:55

Sua foto do perfil

Mauricio Programador

Olá Charles,

muito bem lembrado meu amigo, obrigado pelo compartilhamento conosco.

Grande abraço.

18 de Março de 2014 - 10:17

NEWSLETTER

Receba dicas de programação
em seu e-mail

TWITTER

Acompanhe tudo o que rola
com Mauricio Programador

NEWSLETTER