A Locaweb tem uma página falando só sobre a configuração desta função, mas apesar de seguir o que estava escrito por lá o email continuava não chegando. A solução é simples, embora nada óbvia: você precisa preencher o quinto parâmetro da função mail() com a string “-falgum_email_do_seu_dominio“.
Juntando a necessidade de preencher o quarto parâmetro com esta solução de acrescentar o quinto, o código fica mais ou menos assim:
$email_remetente = "eu@seudominio.com";$headers = "MIME-Version: 1.1\n";$headers .= "Content-type: text/plain; charset=iso-8859-1\n"; // ou UTF-8, como queira$headers .= "From: $email_remetente\n"; // remetente$headers .= "Return-Path: $email_remetente\n"; // return-path$envio = mail("destinatario@algum-email.com", "Assunto", "Mensagem", $headers, "-f$email_remetente");
Outro problema é o endereço de resposta do email. Em formulários de contato de sites desejamos que, ao clicar em “responder” nos emails enviados, o nosso leitor de email automaticamente já responda para o usuário que fez o contato e que inseriu seu email no formulário. O jeito errado é simular que o remetente daquela mensagem foi o email do seu usuário (quando na verdade o email foi enviado pelo seu próprio site). O jeito certo é dizer que aquele email foi enviado por um endereço do seu dominio, mas que se deve responder para (Reply-To) outro endereço.
Resumindo o código ficaria assim:
$email_remetente = "eu@seudominio.com";$headers = "MIME-Version: 1.1\n";$headers .= "Content-type: text/plain; charset=iso-8859-1\n";$headers .= "From: $email_remetente\n"; // remetente$headers .= "Return-Path: $email_remetente\n"; // return-path$headers .= "Reply-To: $email_usuario\n"; // Endereço (devidamente validado) que o seu usuário informou no contato$envio = mail("destinatario@algum-email.com", "Assunto", "Mensagem", $headers, "-f$email_remetente");
Os usuários de servidores Windows devem substituir o “\n” por “\r\n”.
O motivo do problema é o encapsulamento da mensagem feito pelo sendmail. No cabeçalho ele até informa o email certo (do seu domínio), mas se você não passa o quinto parâmetro, na “envelopagem” ele coloca um endereço estranho que é reconhecido como malicioso pelos servidores de email.
IMPORTANTE: o código acima não envia email nenhum pra ninguém. Você precisa preencher as variáveis com os valores corretos antes de usar. Parece óbvio mas recebo cada dúvida…
Fonte
Nenhum comentário:
Postar um comentário