验证电子邮件域是否存在

时间:2010-06-14 19:05:32

标签: c# asp.net smtp

有人检查电子邮件地址的域名作为其验证步骤的一部分吗?例如。如果用户指定blah@gmail.com作为他们的地址,请确认gmail.com存在。


我应该注意,在我的webapp中,现有用户可以将邀请转发给他们的朋友。我根本不需要验证这些邀请。相反,我只是想警告我的用户是否有错字等可能正在向错误的人发送邀请。这甚至值得吗?

5 个答案:

答案 0 :(得分:15)

需要验证用户电子邮件地址的网站通常会通过验证链接向该地址发送电子邮件。检查域名中的电子邮件并不会给你带来太大的影响,因为人们通常会在现有的网络电子邮件提供商(通常是@ gmail.com,@ yahoo.com或@ hotmail.com)上发送虚假的电子邮件。

如果您仍想验证域名,则应对该域名的MX记录进行DNS检查,而不是仅检查域名是否已注册。

更新:请注意,电子邮件的域部分实际上可以是IP地址(即使强烈建议不要使用此表单)。在这种情况下,除非您实际尝试通过SMTP连接到SMTP服务器,否则无法可靠地验证该地址是否存在SMTP服务器。这与发送电子邮件基本相同。

答案 1 :(得分:8)

您可以在mx record上执行dns查找。这是Code Project的一个例子:
http://www.codeproject.com/KB/IP/dnslookupdotnet.aspx

[附录]:

这应该按照要求回答您的问题,但作为旁注,我同意@Franci认为发送验证消息的旧待机状态更好。如果某人做了其他一切正确的愚弄你的验证,那么在检查域名时你真的不会买太多东西。

答案 2 :(得分:1)

我通常会让我使用的任何邮件组件都负责域验证。如果它出现错误,您可以在代码中处理它,并决定是否要将其显示给用户。

答案 3 :(得分:1)

绝对可以检查域是否是有效的邮件服务器。试试these instructions

答案 4 :(得分:1)

您可以在控制台中执行此命令

 nslookup -q=mx gmail.com

并在主机名

之后解析包含MX的行的输出
gmail.com       MX preference = 40, mail exchanger = alt4.gmail-smtp-in.l.google.com
gmail.com       MX preference = 20, mail exchanger = alt2.gmail-smtp-in.l.google.com
gmail.com       MX preference = 5, mail exchanger = gmail-smtp-in.l.google.com
gmail.com       MX preference = 30, mail exchanger = alt3.gmail-smtp-in.l.google.com
gmail.com       MX preference = 10, mail exchanger = alt1.gmail-smtp-in.l.google.com

但我首先不推荐这种检查。如果用户不想给你他的电子邮件地址,他总会找到一种欺骗你的方法。 您唯一能做的就是发送一封包含验证链接的电子邮件。