PHP邮件(mail())函数发送电子邮件,但需要超过10分钟才能显示。

4

当用户在他的手机上从Android应用程序注册并且注册成功后,我会使用我的PHP脚本触发一封邮件发送到注册的电子邮件地址,其中包含激活验证码。以下是我使用的代码行,非常简单。

mail($to, $subject, $message, $headers);

每次邮件都发送到正确的电子邮件地址,但问题是电子邮件在Gmail、Hotmail或Yahoo中显示的时间超过10分钟。对于我来说,这种接收应用程序“激活码”的延迟是不可接受的。
有什么方法可以减少这种延迟,使其变得更快,即使不是即时的也要比现在快很多。您有什么想法吗?
感谢您所有人的帮助!

1
请检查消息的“Received:”头,确保您的托管提供商拥有非常慢的邮件服务器。 - Wooble
1
你在使用GoDaddy吗?因为我在GoDaddy上也遇到了同样的问题。 - William Linton
是的,我在Godaddy上。你是怎么解决这个问题的? - Aakash
2
获取一个带有更快邮件队列的提供商,或在专用服务器上运行自己的邮件服务器。虚拟专用服务器今天很便宜,对于运行稳定、安全的 Web 应用程序至关重要,但显然您需要学会管理服务器。 - bobince
谢谢大家的帮助!我认为独立服务器是正确的选择... - Aakash
5个回答

5
我在使用Godaddy的共享托管和他们提供的SMTP服务时遇到了问题。这是因为SMTP服务器是一个共享的、开放的中继,并且由于通过它传递的邮件数量很多,所以会有大约10分钟的延迟。
你是否在使用共享托管/ Godaddy?你使用的是哪个SMTP中继?
编辑:经过最近的深入研究,我发现在Godaddy共享托管上无法提供高质量的SMTP服务(即发送一封电子邮件不到10分钟)。这非常令人沮丧。看来选择要么购买Godaddy的专用托管(约300美元/年),要么更换服务提供商。

我在GoDaddy上,但如何确定它是否为共享托管?另外,我在哪里可以找到SMTP中继信息?除了mail()函数外,我在PHP脚本中没有使用任何东西。 - Aakash
这是我从GoDaddy收到的回复: - barfoon
1
目前我们托管账户可用的唯一SMTP服务器是relay-hosting.secureserver.net。您将无法在我们的共享托管账户中使用GMail的发件服务器。此外,由于这是一个共享的SMTP服务器,发送电子邮件可能会稍有延迟并不罕见。如果这些电子邮件在发送后60分钟内被接收,则在共享服务器的可接受时间范围内。如果您遇到超过60分钟的延迟或与SMTP中继相关的错误,请回复此邮件。 - barfoon
那很有道理。现在我明白延迟是什么意思了。感谢您的澄清。 - Aakash
在我看来,如果你使用GoDaddy,那么你将得到你应得的东西:为数百万用户提供廉价服务 == 糟糕无用的支持和令人恼火的问题,比如在这个问答中解释的。以类似的价格,你可以找到更专注于支持客户、更愿意适应客户需求的较小的托管公司,例如http://www.qualityhostonline.com。 - Marco Demaio

3

除了其他一切,接收方可能正在使用灰名单技术,这基本上会在第一次发送邮件时将其反弹回去,理论上垃圾邮件源不会尝试重新发送,而合法的服务器则会在几分钟后重新尝试。


0

很可能是您的服务器问题,也许您安装了反垃圾程序或反病毒程序?如果您在共享环境中,可能会有一个队列。


0

我猜你正在使用一些共享主机,可能正在使用某个 q 系统,因此有延迟...如果你非常在意邮件的即时交付,我建议你使用专用主机。


你可以使用curl登录你的电子邮件账户并发送邮件,但这需要你自己编写相当多的代码... 如果你决定更换提供商,我可以推荐one.com,他们价格便宜且速度快,我已经使用了三年,从未让我失望。 - Breezer
我想在购买专用服务器之前尝试使用curl。 - Aakash

0
大家可以试试这个服务...很棒的API集成。www.postmarkapp.com 经过长时间的搜索,我将我的Android应用程序账户激活电子邮件服务集成到了Postmark,并且效果非常好。邮件立即发送给用户,延迟从愚蠢的Godaddy的10分钟或更多减少到一分钟以内。我强烈推荐它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接