{"id":322,"date":"2012-03-22T20:07:44","date_gmt":"2012-03-22T23:07:44","guid":{"rendered":"https:\/\/felipeelia.com.br\/?p=322"},"modified":"2019-02-15T18:31:02","modified_gmt":"2019-02-15T21:31:02","slug":"funcao-mail-php-retorna-true-mas-o-email-nao-chega-ao-destino","status":"publish","type":"post","link":"https:\/\/felipeelia.com.br\/funcao-mail-php-retorna-true-mas-o-email-nao-chega-ao-destino\/","title":{"rendered":"Fun\u00e7\u00e3o mail() PHP retorna true mas o email n\u00e3o chega ao destino"},"content":{"rendered":"
Mais um dos problemas que acontecem na Locaweb,<\/a>\u00a0passei por este em dois clientes diferentes, ambos hospedados l\u00e1. Enviava um email pela fun\u00e7\u00e3o mail() do PHP que retornava verdadeiro, mas o email n\u00e3o chegava ao destino<\/strong>.<\/p>\n A Locaweb tem uma p\u00e1gina falando s\u00f3 sobre a configura\u00e7\u00e3o desta fun\u00e7\u00e3o<\/a>, mas apesar de seguir o que estava escrito por l\u00e1 o email continuava n\u00e3o chegando. A solu\u00e7\u00e3o \u00e9 simples, embora nada \u00f3bvia: voc\u00ea precisa preencher o quinto par\u00e2metro da fun\u00e7\u00e3o mail() com a string “-falgum_email_do_seu_dominio<\/span>“.<\/p>\n <\/p>\n Juntando a necessidade de preencher o quarto par\u00e2metro com esta solu\u00e7\u00e3o de acrescentar o quinto, o c\u00f3digo fica mais ou menos assim:<\/p>\n Outro problema \u00e9 o endere\u00e7o de resposta do email.<\/strong> Em formul\u00e1rios de contato de sites desejamos que, ao clicar em “responder” nos emails enviados, o nosso leitor de email automaticamente j\u00e1 responda para o usu\u00e1rio que fez o contato e que inseriu seu email no formul\u00e1rio. O jeito errado \u00e9 simular que o remetente daquela mensagem foi o email do seu usu\u00e1rio (quando na verdade o email foi enviado pelo seu pr\u00f3prio site). O jeito certo \u00e9 dizer que aquele email foi enviado por um endere\u00e7o do seu dominio, mas que se deve responder para (Reply-To) outro endere\u00e7o.<\/strong><\/p>\n Resumindo o c\u00f3digo ficaria assim:<\/p>\n Os usu\u00e1rios de servidores Windows devem substituir o “\\n” por “\\r\\n”.<\/p>\n O motivo do problema \u00e9 o encapsulamento da mensagem feito pelo sendmail. No cabe\u00e7alho ele at\u00e9 informa o email certo (do seu dom\u00ednio), mas se voc\u00ea n\u00e3o passa o quinto par\u00e2metro, na “envelopagem” ele coloca um endere\u00e7o estranho que \u00e9 reconhecido como malicioso pelos servidores de email.<\/p>\n IMPORTANTE: o c\u00f3digo acima n\u00e3o<\/strong> envia email nenhum pra ningu\u00e9m. Voc\u00ea precisa preencher as vari\u00e1veis com os valores corretos antes de usar. Parece \u00f3bvio mas recebo cada d\u00favida…<\/p>\n Se voc\u00ea est\u00e1 com problemas para enviar e-mails no WordPress o motivo pode ser o mesmo e a solu\u00e7\u00e3o ser\u00e1 bem diferente. Expliquei como enviar e-mails por SMTP no WordPress<\/a> em outro artigo.<\/p>\n","protected":false},"excerpt":{"rendered":" Mais um dos problemas que acontecem na Locaweb,\u00a0passei por este em dois clientes diferentes, ambos hospedados l\u00e1. Enviava um email pela fun\u00e7\u00e3o mail() do PHP que retornava verdadeiro, mas o email n\u00e3o chegava ao destino. A Locaweb tem uma p\u00e1gina falando s\u00f3 sobre a configura\u00e7\u00e3o desta fun\u00e7\u00e3o, mas apesar de seguir o que estava escrito […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[22],"tags":[8],"yoast_head":"\n$email_remetente = \"eu@seudominio.com\";\n$headers = \"MIME-Version: 1.1\\n\";\n$headers .= \"Content-type: text\/plain; charset=iso-8859-1\\n\"; \/\/ ou UTF-8, como queira\n$headers .= \"From: $email_remetente\\n\"; \/\/ remetente\n$headers .= \"Return-Path: $email_remetente\\n\"; \/\/ return-path\n$envio = mail(\"destinatario@algum-email.com\", \"Assunto\", \"Mensagem\", $headers, \"-f$email_remetente\");<\/code><\/pre>\n\n
$email_remetente = \"eu@seudominio.com\";\n$headers = \"MIME-Version: 1.1\\n\";\n$headers .= \"Content-type: text\/plain; charset=iso-8859-1\\n\";\n$headers .= \"From: $email_remetente\\n\"; \/\/ remetente\n$headers .= \"Return-Path: $email_remetente\\n\"; \/\/ return-path\n$headers .= \"Reply-To: $email_usuario\\n\"; \/\/ Endere\u00e7o (devidamente validado) que o seu usu\u00e1rio informou no contato\n$envio = mail(\"destinatario@algum-email.com\", \"Assunto\", \"Mensagem\", $headers, \"-f$email_remetente\");<\/code><\/pre>\n
\n