我正在使用 PHP 的 SwiftMailer 库批量发送电子邮件(遵循 CANSPAM 和 RFC)。
一切正常,直到我遇到在 DNS 中没有相应 MX 条目的域。那时,我的脚本只是挂起——我假设这是因为 sendmail 没有返回。这可以持续几分钟,也可以持续数小时。
我已经确认我的脚本(斜线 sendmail)挂起的地址是那些没有 DNS MX 条目的地址。其他一切都很好。
在我尝试发送消息之前,有没有办法可以检查 PHP 中是否存在 DNS MX?这是可扩展的(即,在 DNS 上的额外查找真的会减慢我的速度吗,或者它会很好 b/c 然后 MX 在本地缓存以供 sendmail 用于传递消息)?
谢谢你的帮助
--- 更新 --- 我尝试了以下解决方案,这帮助我缩小了问题的范围。看来这不是 MX 条目是否存在的问题。问题是 DNS 查找需要永远返回。有没有一种简单的方法可以设置超时,所以如果 DNS 在 < 5 秒内没有返回,我可以继续吗?