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);
---------------------------------------------------------------------------------------------------------