Utilizando a classe phpmailer como alternativa a função mail() do PHP
A classe phpmailer é uma ótima alternativa pois não necessita de servidores SMTP rodando na máquina, facilitando seu uso em diversos sistemas operacionais. Antes de tudo precisamos baixar a classe phpmailer, disponível em:
Vamos agora enviar um email simples em modo texto:
<?PHP //Primeiro setamos o cabeçalho:
$header .= " Content-type: text/html; charset=iso-8859-1\r\n"; //instanciamos o objeto
$mail = new PHPMailer(); // Informamos que vamos enviar através de SMTP
$mail->IsSMTP(); // Colocamos o servidor smtp
$mail->Host = "smtp.seusmtp.com.br"; // Se seu servidor de smtp necessita de autenticação, devemos habilitar este item:
$mail->SMTPAuth = true; // colocamos agora o usuário e senha do servidor smtp
$mail->Username = "seuemail@seumsmtp.com.br";
$mail->Password = "******"; // Agora vamos informar qual email vai aparecer como remetente
$mail->From = "seuemail@seusmtp.com.br";
$mail->FromName = "Seu Nome";
//Agora vamos adicionar alguns destinatários
$mail->AddAddress("fulano@vivaolinux.com.br","Fulano");
$mail->AddAddress("ciclano@vivaolinux.com.br","Ciclano"); //Podemos setar qual é o tamanho do texto por linha pra quebrar a linha de forma automática
$mail->WordWrap = 50; //Vamos colocar o assunto do email
$mail->Subject = "Hello sWriter"; //Colocamos o texto do email
$mail->Body = "Este foi meu teste de email"; //e mandamos enviar:
if(!$mail->Send())
{ //Exibimos o erro ocorrido
echo $mail->ErrorInfo;
}
?>
Email avançado HTML + anexo
Agora vamos enviar um email mais elaborado em HTML e com anexos.
Primeiro vamos inicializar a parte padrão do email da mesma maneira que na anterior:
<?PHP //Primeiro setamos o cabeçalho:
$header .= " Content-type: text/html; charset=iso-8859-1\r\n"; //instanciamos o objeto
$mail = new PHPMailer(); // Informamos que vamos enviar através de SMTP
$mail->IsSMTP(); // Colocamos o servidor smtp
$mail->Host = "smtp.seusmtp.com.br"; // Se seu servidor de smtp necessita de autenticação, devemos habilitar este item:
$mail->SMTPAuth = true; // colocamos agora o usuário e senha do servidor smtp
$mail->Username = "seuemail@seumsmtp.com.br";
$mail->Password = "******"; // Agora vamos informar qual email vai aparecer como remetente
$mail->From = "seuemail@seusmtp.com.br";
$mail->FromName = "Seu Nome";
//Agora vamos adicionar alguns destinatários
$mail->AddAddress("fulano@vivaolinux.com.br","Fulano");
$mail->AddAddress("ciclano@vivaolinux.com.br","Ciclano"); //Podemos setar qual é o tamanho do texto por linha pra quebrar a linha de forma automática
$mail->WordWrap = 50; //Vamos colocar o assunto do email
$mail->Subject = "Hello sWriter";
?>
Agora sim vamos as novidades:
<?PHP //vamos anexar os arquivos:
$mail->AddAttachment("anexo/arquivo.zip");
$mail->AddAttachment("imagem/foto.jpg");
//Setamos a propriedade do HTML para true
$mail->IsHTML(true);
//Colocamos o texto do email
$mail->Body = "<H1><b>Este é um texto em HTML</b></H1>"; //e mandamos enviar:
if(!$mail->Send())
{ //Exibimos o erro ocorrido
echo $mail->ErrorInfo;
}
?>
É isso aí pessoal, agradeço por estarem lendo este texto e qualquer dúvida é só perguntar.
[1] Comentário enviado por removido em 28/11/2009 - 19:21h
Olá Thiago, muito bom seu artigo.
Só complementando, esses dias tive problemas com o phpmailer e logo descobri que o erro ocorria devido a versão do PHP (4) que o servidor em questão estava utilizando. Para contornar o problema, baixei as duas versões (para PHP4 e PHP5) e então acrescentei as seguintes linhas ao script (no início do script ) pois assim poderia utilizar o script sem erros em qualquer servidor com qualquer versão do PHP:
// Detecta a versão do PHP.
if( substr(phpversion(),0,strpos(phpversion(), '-')) >= '5.0.0' ) {
$PHP_VERSAO = "PHP5";
} else {
$PHP_VERSAO = "PHP4";
}
// Inclui a classe phpmailer de acordo com a versão do PHP.
include ("suapasta/phpmailer/". $PHP_VERSAO ."/class.phpmailer.php");
// Define o Idioma do PHPMailer para Português Brasileiro (em caso de erros, estes serão exibidos corretamente em nosso idioma).
$mail->SetLanguage("br", "suapasta/phpmailer/$PHP_VERSAO/language/");
[5] Comentário enviado por thiago.silva em 01/12/2015 - 11:07h
Bom dia henbran!.
Provavelmente seu problema está nas "novas" regras de envio de emails. Com aspas porque acho que foi em 2013 ou 2014, se não me engano.
Verifique na configuração do smtp se a porta selecionada é a 587. Se estiver 25, troque para a 587. A conta do email do remetente também deve ser o mesmo da exibida para o destinatário para resposta, ou seja, $mail->Username deve ser igual a $mail->From;
Confirme nas configurações do seu provedor se os endereços de smtp, conta de usuário e senha conferem.
[6] Comentário enviado por henbran em 01/12/2015 - 12:21h
Prezados ... e Thiago ... obrigado. Porém soube agora com o pessoal de infra que preciso setar o mailler para conexão com PROXY da rede. Apenas precisamos saber como se faz isso. Estou googlando aqui, se alguém souber a solução, por gentileza, compartilhem conosco. Todavia, se eu encontrar, posto aqui.