发布网友 发布时间:2022-04-24 17:48
共1个回答
热心网友 时间:2022-04-11 16:51
这个我觉得不能保证有效的,因为邮件的发送是由服务器处理的而且中间可能存在转发,所以你想知道对方邮箱是否不存在是不能精确的得到回复,比如 DNS 中的 MX 记录可以把我个人的服务器的邮件服务转发到 gmail 上,这中间你询问我的服务器得到不到任何回复,因为我根本没开启这个服务。唯一能确认的办法只有尝试登录,不过要意识到,接收邮件的服务器和邮箱地址后缀本身并没有对应关系(邮箱后缀 .com并不代表我的服务器就一定是 .com)但我想就算服务器愿意告诉你这个用户不存在(多数情况下它可能不明说是密码错了还是用户名错了),我觉得你也不可能在程序中频繁地询问,因为服务器会认为你是在攻击它。
所以你这想法本身没有理论上的依据,如果什么都知道,那这世界垃圾邮件你能阻止么?
不过换个角度想,Foxmail 邮件特快传递的原理是绕过邮件转发,直接尝试向对方邮件服务器发送邮件(就像我上面的例子,我在自己的动态DNS服务器上配置一个 MX 记录,把所有跟邮件相关的请求全部转发到 gmail 服务器上,这时向我发邮件需要经过多道手续,首先DNS服务商本身也提供邮件服务,可能它会先收下邮件,然后转发出去)因此,一般对方服务器会在很短的时间内处理这个邮件,那么邮箱是否存在就很快得到答复,当然,我们不能假定服务器会立即答复或者服务器会在你尝试发送邮件的时候就告诉你用户不存在。因为我们是通过 QQ 邮件服务器来发送邮件的,我们的程序本身自己不是邮件服务器,因此想立即知道对方邮箱是否存在,只有自己程序来充当邮件服务器来询问对方的服务器(注意这过程中要已经绕过了MX路由找到了目标服务器),就好像你这个程序连接到对方服务器后,说:“服务器 qq 正在尝试转发一封到自 .com 某用户 QQ 的邮件到你的用户 名下,请收下它“,这时候对方服务器会立即告诉你这个用户 不存在。