我有一个简单的电子邮件发件人,可以激活用户帐户。根据我使用的电子邮件地址,我得到的响应时间明显不同:大学电子邮件 - 1分钟,Gmail - 3-4小时,雅虎 - 1或2天 - 这看起来很奇怪。还有其他人看过这种现象吗?
编辑:
答案不多(即使是赏金),但我会更清楚地解释我的问题。
这个可能不是greylsting - 如果我这么简单:
php mail ($to, $subject, $body) // this delivers instantly.
我的cakephp代码:
function __sendActivationEmail($id) {
$User = $this->User->read ( null, $id );
$this->set ( 'suffix_url', $User ['User'] ['id'] . '/' . $this->User->getActivationHash () );
$this->set ( 'username', $User ['User'] ['username'] );
$this->Email->to = $User ['User'] ['email'];
$this->Email->subject = 'Test.com - ' . __ ( 'please confirm your email address', true );
$this->Email->from = 'noreply@test.com';
$this->Email->template = 'user_confirm';
$this->Email->sendAs = 'text';
$this->Email->delivery = 'mail';
$this->Email->send ();
}
导致延迟从13分钟(确定;我们将处理它)到5-6小时(不太好,因为这是一封激活邮件)。对于我的一些用户,它可以立即工作,但对于其他用户(同一服务提供商,即gmail,它会看到这些延迟)。
任何线索?
答案 0 :(得分:1)
代码看起来很好,但它当然没有说明邮件服务器的配置。 3-4个小时我会说到Greylisting,但1-2天肯定是太多了。这是可重复的吗?您尝试了多少个地址?
(收到)邮件的完整标题是什么样的? “收到来自:......”的路径应该告诉你,在哪一天需要1-2天才能完成。
答案 1 :(得分:0)
也许您可以将PHPMailer安装为供应商并创建一个名为“Mail”的组件......
不要忘记使用 SMTP服务器进行身份验证! :)
答案 2 :(得分:0)
暂时忽略它的整个PHP元素。
例如,如果是Linux服务器,请从命令行发送邮件,例如邮件myemail@me.com
看看同样的事情是这样发生的。很可能它的服务器配置问题不是php或cakePHP问题。
查找一些基本信息,例如拥有FQDN,并考虑为您的电子邮件设置SPF记录。确保这些电子邮件来自您的域名而非其他人,例如不是用户的电子邮件。
同时检查您是否设置了电子邮件垃圾邮件软件,该软件可能是灰色的,列出了您在出路时的电子邮件(不太可能,但可能)。最常见的是目标垃圾邮件过滤器正在推迟它。尝试发送到Gmail帐户,看看它是否正常或进入垃圾邮件。
在没有触及PHP的情况下完成所有这些,如果一切正常,那么设置一个基本的PHP脚本来做一个不使用CakePHP的基本电子邮件,如果它工作正常然后你知道它的CakePHP等但我怀疑它。
答案 3 :(得分:0)
因此,在进一步挖掘之后,我意识到这是我们服务器主机的问题。我们使用Slicehost,并且恰好已经被列入黑名单的一系列ips包括我们自己的ip。我们从列表中取名,我们很高兴。