Leobreda.net

Web, .Net,
SQL, Cloud...

Enviando e-mail autenticado no PHP

Utilize conexão smtp para o envio de e-mails no php, e evite que seu e-mail vá parar na pasta spam

Para quem trabalha com PHP, existe 2 tipos de envio de e-mails: o não-autenticado e o autenticado.

Lembrando que no modo não-autenticado, qualquer pessoa pode se passar por você utilizando o seu endereço de e-mail como remetente, e isso não é bom. É como se eu fosse passar um trote ao seu vizinho se passando por você.

Para coibir esta prática (originando assim o SPAM), diversas empresas de e-mails (Gmail, Yahoo, Hotmail, ...) implementaram o ANTI-SPAM: faz-se o uso do DNS reverso e descobre que o e-mail é enviado pelo servidor de páginas - APACHE - e não o servidor SMTP, prática comum da função mail() do PHP.

 

Para resolver este problema:

1. faça o download da biblioteca aqui

2. Descompacte a biblioteca na pasta /includes/classes/email.class/

3. Se você trabalha com algum arquivo de configuração do tipo /config.php, insira o código abaixo:

---------------------------------------------------------------------------------------------------------

<?php

// Autenticação padrão
$cfg["email_smtp"]      = "smtp.seusite.com";
$cfg["email_usuario"]  = "email@seusite.com";
$cfg["email_senha"]    = "123123";
$cfg["email_porta"]    = "587";
$cfg["email_ssl"]       = false;

// Autenticação Gmail ou Google Apps
$cfg["email_smtp"]        = "smtp.gmail.com";
$cfg["email_usuario"]    = "email@seusite.com";
$cfg["email_senha"]        = "123123";

$cfg["email_porta"]    = "465";
$cfg["email_ssl"]    = "ssl";

?>

---------------------------------------------------------------------------------------------------------

4. Gere o arquivo da classe abaixo, e salve como /includes/classes/email.class.php

---------------------------------------------------------------------------------------------------------

<?php

include_once("email.class/smtp.php");

Class Email
{
  var $para, $titulo, $mensagem;
  var $erro;
  private $obj, $saida;

  function Envia()
  {
    global $cfg;
    $para       = strtolower($this->para);
   $titulo     = $this->titulo;
   $mensagem     = $this->mensagem;

   $obj = new SMTP;
   $obj->Delivery('relay');
   $obj->Relay($cfg["email_smtp"], $cfg["email_usuario"], $cfg["email_senha"], $cfg["email_porta"], 'login', $cfg["email_ssl"]);
   $obj->TimeOut(10);
   $obj->From($cfg["email_usuario"]);

   $para=str_replace(",", ";", $para);    $para=str_replace(" ", "", $para);$para=explode(";", $para);
   for($i=0;$i<count($para);$i++)
   {
      $obj->AddTo($para[$i]);
   }


   $obj->Html($mensagem);
   try{
      $obj->Send($titulo);
      $saida = true;
   }
   catch (Exception $e) {$saida = false;}
   unset($obj);
   return $saida;

  }

}

?>

---------------------------------------------------------------------------------------------------------

 

Toda vez que precisar enviar um e-mail, basta executar o código abaixo:

---------------------------------------------------------------------------------------------------------

$obj = new Email;

$obj->para = "fulano@hotmail.com";

$obj->titulo = "Teste de e-mail";

$obj->mensagem = "Olá, Fulano. Estou enviando este teste de e-mail";

if($obj->Envia())

{

echo "E-mail enviado com sucesso!";

}else{

echo "Erro no envio de e-mail :-(";

}

unset($obj);

---------------------------------------------------------------------------------------------------------




Acessar todos os artigos »