我正在使用phps mail()函数发送确认电子邮件。
据我所知,收到的电子邮件是通过gmail和其他人收到的,我遇到的唯一真正的问题是将电子邮件发送到Hotmail或Yahoo帐户。
我已在互联网上阅读,很多人建议PHPmailer
你们在发送php mail()时建议你做什么?我正在创建的这个网站是为了合法的业务,无论我发送给谁,我都需要发送和接收邮件。
以下是我的代码,我使用了特定的标题来尝试解决问题。我拥有自己的专用服务器而且我没有列入任何垃圾邮件列表的黑名单,我能想到的只是它本身。
$to = $email;
$subject = "Subject";
$body = "Message";
$headers .= "From: Accounts <accounts@site.com>\r\n";
$headers .= "Reply-To: <accounts@site.com>\r\n";
$headers .= "X-Sender: <accounts@site.com>\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion() . '\r\n'; //mailer
$headers .= "X-Priority: 3\r\n"; //1 UrgentMessage, 3 Normal
$headers .= "Return-Path: <accounts@site.com>\r\n";
$headers .= "MIME-Version: 1.0\r\n";
mail($to, $subject, $body, $headers);
非常感谢任何帮助。
问候。
答案 0 :(得分:10)
在大多数情况下,使用PHPMailer或swiftmailer或任何其他库不会提高您的交付率:最可能的罪魁祸首是您的服务器设置。
成功发送电子邮件非常困难,请在此处阅读:http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code.html,了解必要的基本概述。
特别是雅虎真的想要DKIM设置,如果你的ISP没有为你做这件事,或者你正在使用VPS,那真的很痛苦。
成功发送电子邮件需要花费更多时间,而不是单独使用黑名单。许多ISP的默认设置,它假设你是垃圾邮件,直到你设置的东西会让他们不这么认为。直到被证明是无辜的,才有罪。
在编码恐怖帖中,请注意这段话:
Port25提供了一个非常漂亮的公众 服务 - 您可以发送电子邮件给 check-auth@verifier.port25.com和它 将回复来自:地址 广泛的诊断!
我不得不使用备用地址进行测试; check-auth2@verifier.port25.com。您可以在此处阅读有关每个地址测试原因的详细信息:http://www.port25.com/domainkeys/
从长远来看,如果您发送交易电子邮件(即不是群发邮件,而是电子邮件以响应用户操作),我建议使用邮戳(postmarkapp.com)等服务,因为每个邮件的百分之十分之一电子邮件,你得到了所有丑陋的照顾你。
答案 1 :(得分:-2)
php mail()函数不是一个完美的选择。很多时候,谷歌/雅虎或其他一些电子邮件提供商会阻止您托管的地址,因此邮件永远不会到达目的地(因此,也不会在垃圾箱中)。有时候,您可能会面临发送到不同域中的两个电子邮件地址(例如,gmail和hotmail),一个已经发送,另一个没有。所以mail()函数虽然非常简单易用,但如果你想要可靠的电子邮件传递,它总是不合适。
对我而言,如果您的托管服务支持FSOCKOPEN,最好是使用您的托管服务器或任何Gmail地址的smtp服务器。