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.
