【问题标题】:php mail() -> junk, sometimes not even received?php mail() -> 垃圾,有时甚至没有收到?
【发布时间】:2011-05-18 23:48:19
【问题描述】:

我正在使用 phps mail() 函数发送确认电子邮件。

据我所知,电子邮件是通过 gmail 和其他方式收到的,我遇到的唯一真正问题是在将电子邮件发送到 Hotmail 或 Yahoo 帐户时。

我在网上看了很多人建议PHPmailer

你们在发送 php mail() 时建议做什么?我正在创建的这个网站是为合法企业服务的,无论我将邮件发送给谁,我都需要发送和接收邮件。

以下是我目前的代码,我使用特定的标头来尝试解决问题。我拥有自己的专用服务器,我没有被列入任何垃圾邮件列表,我能想到的只是它本身就是 php。

$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);

非常感谢任何帮助。

问候。

【问题讨论】:

    标签: php email


    【解决方案1】:

    在大多数情况下,使用 PHPMailer、swiftmailer 或任何其他库不会提高您的交付率:最可能的罪魁祸首是您的服务器设置。

    众所周知,成功发送电子邮件非常困难,请在此处阅读:http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code.html,了解必要条件的基本概述。

    Yahoo 特别希望设置 DKIM,如果您的 ISP 没有为您完成此操作,或者您使用的是 VPS,可能会非常痛苦。

    成功发送电子邮件比不列入黑名单需要更多时间。许多 ISP 的默认设置因此假设您是垃圾邮件,直到您设置了让他们认为不同的东西。有罪直到被证明是无辜的。

    在codinghorror帖子中,记下这段话:

    Port25 提供了一个非常漂亮的公众 服务——您可以发送电子邮件至 check-auth@verifier.port25.com 和它 将回复 from: address with 广泛的诊断!

    我必须使用备用地址才能进行测试;检查-auth2@verifier.port25.com。您可以在此处阅读为什么要使用每个地址进行测试的详细信息:http://www.port25.com/domainkeys/

    从长远来看,如果您要发送交易电子邮件(即不是群发邮件,而是响应用户操作的电子邮件),我推荐使用邮戳 (postmarkapp.com) 之类的服务,因为每封邮件只需 1/10 美分电子邮件,你得到所有丑陋的照顾。

    【讨论】:

    • 外包电子邮件发送为我省去了很多麻烦。而且邮戳能够将有关退回的电子邮件的信息发送到我指定的 URL 非常方便。
    • 遗憾的是,在使用它的一个小时内,他们的服务器就崩溃了。让我们希望它不是即将发生的事情的迹象。看起来是个不错的应用程序
    • 奇怪,我昨天可能有 50 封电子邮件没有问题。技术支持相当不错,尝试发布到帮助论坛:)
    【解决方案2】:

    php mail() 函数使用起来并不完美。很多时候,谷歌/雅虎或其他一些电子邮件提供商会阻止您的主机地址,因此邮件从未到达目的地(因此,也不会在垃圾箱中)。有时,您可能会遇到发送到不同域(例如 gmail 和 hotmail)的两个电子邮件地址,一个已送达,另一个未送达。所以 mail() 函数虽然非常简单易用,但如果您想要可靠的电子邮件传递,则并不适合。

    对我来说,最好的办法是使用主机的 smtp 服务器或任何 gmail 地址(如果您的主机支持 FSOCKOPEN)。

    【讨论】:

    • 您认为mail() 究竟是如何运作的?它会联系为它设置的任何 SMTP 服务器,这可能是“您的主机的 SMTP 服务器”。问题是这样的:没有可靠的电子邮件传递,无论发送方法如何。SMTP 是一种尽力而为的存储转发协议,但它明确提供零传递保证。抱歉,如果这让您感到困扰,但就是这样电子邮件的本质:不可靠。参见例如这是一些提示如何增加获得交付的几率codinghorror.com/blog/2010/04/…
    猜你喜欢
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2013-10-18
    • 2011-10-12
    相关资源
    最近更新 更多