Envio de e-mail pelo PHP

Publiquei uma forma de enviar e-mails via PHP utilizando uma classe para autenticação do e-mail, mas muitas pessoas acabam não gostando de usar essas classes, por isso vou deixar registrado aqui como fazer um código simples para enviar e-mail sem precisar de classes. Com “garantia” de que seu e-mail irá chegar na caixa de entrada dos usuários sem cair no SPAM.

Primeiro a gente tem que entender como é formado o e-mail.
Abaixo tem uma representação dele:

{ Cabeçalho }
------------------
| Corpo do e-mail |
------------------
[ Anexos ]

Vou explicar como fazer as partes de cabeçalho e corpo do e-mail. A parte de anexos é mais complexa, e nesses casos recomendo usar o PHPMailer mesmo.

O mais importante do e-mail é o cabeçalho. Ele é como uma certidão de nascimento, informando a data de criação, formatação, quem enviou, para quem deve ser respondido, prioridade e etc. Abaixo tem um exemplo do cabeçalho bem completo:

//Cabeçalho do e-mail.
$cabecalho = "MIME-Version: 1.0\r\n";
$cabecalho .= "Date: Tue, 29 Dez 2011 18:55:43 -0200\r\n";
$cabecalho .= "Message-ID: <ds989a8dfs8iojlk342@dominio.com.br>\r\n";
$cabecalho .= "Content-type: text/plain; charset=utf-8\r\n";
$cabecalho .= "From: Nome <dominio@dominio.com.br>\r\n";
$cabecalho .= "Reply-To: Nome <dominio@dominio.com.br>\r\n";
$cabecalho .= "Return-Path: dominio@dominio.com.br\r\n";
$cabecalho .= "X-Priority: 3\r\n";
$cabecalho .= "X-Mailer: Dominio";

Agora vou explicar cada um dessas informações do cabeçalho:

MIME-Version: Informa ao servidor de e-mails qual é a versão de Mimi-type este e-mail está usando. A versão atual está na 1.0

Date: Diz em qual data este e-mail foi gerado. O formato da data tem que estar nos padrões da RFC. Você pode formata-los usando a função date(‘D, j M Y H:i:s O’);

Message-ID: O proprio nome ja diz, é um ID único que você precisa dar para seu e-mail, com isso o servidor de e-mails pode manipula-lo com mais facilidade e evitar duplicação. Você pode fazer o range aleatório usando o código md5(mt_rand());

Content-type: Informa em qual codificação está seu e-mail e o que ele representa (texto puro ou texto com HTML). Lembrando que a codificação informada no Contenty-type precisa ser a mesma da sua pagina.php. Recomendo usar UTF-8.

From: Informa de quem veio o e-mail. De preferencia, ponha um e-mail que exista e que esteja dentro do seu domino, isso reduz a possibilidade de SPAM;

Reply-to: Informa para quem deve ser respondido o e-mail. Também dê preferencia para e-mails dentro do seu domínio;

Return-Path: É um e-mail que deverá ser usado pelo servidor caso a caixa postal do destinatário não exista ou esteja cheia. Também deve ser um e-mail dentro do seu domínio;

X-Priority: Prioridade do seu e-mail. 1 para urgente, 3 para e-mail normal (padrão) e 5 para prioridade baixa;

X-Mailer: Quem ou qual programa enviou o e-mail. Pode ser o próprio nome do seu domínio.

O conteúdo do e-mail pode ser escrito usando Heredoc:

$mensagem = <<<EOD
Olá fulano de tal...
EOD;

E para enviar o e-mail, basta usar a função mail() como no exemplo abaixo:

mail("$nome_destinatario <$email_destinatario>", 'Titulo do email', $mensagem, $cabecalho);

Lembrando que quanto mais detalhado e bem feito estiver seu Cabeçalho, mais chances de ser bem sucedido seu e-mail tem.

Testei com essas técnicas nos e-mails do Outlook, UOL, Gmail, Hotmail e Yahoo!, e todos chegaram direto nas caixas postais.

Facebook Twitter Linkedin Digg Delicious Reddit Stumbleupon Tumblr Posterous