Pular para o conteúdo

Utilizando a classe phpmailer como alternativa a função mail() do PHP

Dica publicada em Linux / Introdução
Thiago Luiz da Silva thiago.silva
Hits: 18.370 Categoria: Linux Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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:
Procure pelo arquivo "PHPMailer_v5.1.zip" na categoria PHPMailer v5.1 ou superior.

Depois de descompactar o arquivo em uma pasta de seu interesse dentro do servidor, é só incluir no arquivo desejado com a função:

include("suapasta/phpmailer/class.phpmailer.php");

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;
  }
?>
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

Espero que este tenha sido útil.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Exibindo código ASCII das teclas

OCS Inventory no CentOS 6.5 - Para inventário de rede

Qual a melhor distribuição?

Primeiras Impressões do KDE 3.5

Instalação do Firefox 7, Flash Player 11 e Java 1.6.u29

Mudando o IP do Virtua

#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/");

Abraço...
#2 Comentário enviado por thiago.silva em 28/11/2009 - 20:31h
Obrigado pela colaboração João. Vai ser bem útil para o pessoal.
#3 Comentário enviado por mauricioalemonge em 18/12/2012 - 17:07h
Olá Thiago, muito boa sua dica! Parabéns!

Obrigado, me ajudou e muito a sua dica.
#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.

Espero que tenha ajudado.

Abraços
#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.

Até +

Contribuir com comentário

Entre na sua conta para comentar.