我目前正在尝试检查电子邮件地址的有效性,首先检查MX记录是否存在,使用getmxrr()
或dns_get_record()
与PHP7对DigitalOcean droplet。
在我的示例中(返回了错误的响应),我试图检查域“www.example.com“上的电子邮件地址nuwatches.com。使用dns_get_record(”nuwatches.com”, DNS_ALL)
时,返回了一个包含MX记录的数组,尽管我知道这在现实中并不存在:
[5] => Array (
[host] => nuwatches.com.com
[class] => IN
[ttl] => 27
[type] => MX
[pri] => 1
[target] => mail.user-mail.net
)
然而,如果我直接从DigitalOcean droplet上的控制台使用nslookup
,我会被正确地告知不存在MX记录。
此外,如果我在不同的droplet上运行dns_get_record()
函数,或者使用在线PHP代码运行程序,我也会得到正确的答案(即不存在MX记录)。
我已经和DigitalOcean支持人员谈过了,他们建议PHP在那个特定的小滴上发生了一些奇怪的事情,也许是缓存问题,但是我根本不知道是什么导致了这种差异,特别是我自己没有缓存任何东西。
就目前情况而言,要在这个微滴上获得正确的响应,唯一的选择是运行nslookup
,然后解析结果,但如果可能的话,我希望使用dns_get_record()
。
我很感激任何建议。谢谢!
2条答案
按热度按时间t9aqgxwy1#
当使用记录类型
DNS_ANY
的默认值调用dns_get_record()
或使用DNS_ALL
调用dns_get_record()
时,我遇到了类似的问题。php dns_get_records( host, type ) is returning false with type=DNS_ALL but returns DNS records with DNS_TXT or DNS_A
对我有效的解决方案是用途:
我仍在调查这种行为背后的原因。
2hh7jdfx2#
你可以试着用第三方PHP库来做这个,我刚刚测试过,它对我很有效。
样品
结果