我使用PHP的SwiftMailer库批量发送电子邮件(在CANSPAM和RFC之后)。Sendmail在域MX不存在时挂起
一切正常,直到我运行一个在DNS中没有对应MX条目的域。那时,我的脚本就挂了 - 我假设这是因为sendmail没有返回。这可以持续几分钟,或者可以持续几个小时。
我已确认我的脚本(slash sendmail)挂在的地址是没有DNS MX条目的地址。其他的一切都很好。
在我尝试发送消息之前,有没有一种方法可以检查DNS MX是否存在于PHP内部?这是否可扩展(即,DNS上的额外查找是否真的让我放慢了速度,或者它是否正常b/c,然后将MX缓存到本地以供sendmail用于传递邮件)?
感谢您的帮助
--- UPDATE --- 我尝试以下解决方案,这让我缩小问题是什么。这似乎不是MX条目是否存在的问题。问题在于DNS查找将永远返回。有没有简单的方法可以设置超时,所以如果DNS不返回< 5秒,我可以继续吗?
谢谢!这有助于;现在看来问题不在于它是否存在,而在于返回该值的滞后。更新了上面的问题,关于如何在5秒后使请求超时的任何建议? – 2010-11-10 19:37:34
看到我的其他建议 – stillstanding 2010-11-10 19:48:28
所以不会试图打开一个套接字连接到电子邮件的域?我的问题是(经常)我发送到onedomain.com(可能有或没有A记录),但MX是for two.onedomain.com。所以,当我打开一个套接字时,它仍然不会(准确地)告诉我该电子邮件是否应该发送(它告诉我有一个关于onedomain.com的记录,我真正想知道的是一个记录[ MX查找]如果该域名有MX条目)。我是否认为这两件事不是一回事? – 2010-11-10 21:48:40