C# 验证电子邮件域是否存在

C# 验证电子邮件域是否存在,c#,asp.net,smtp,C#,Asp.net,Smtp,作为验证步骤的一部分,是否有人检查电子邮件地址的域?如果用户指定,请确认gmail.com是否存在blah@gmail.com作为他们的地址 我应该注意,在我的webapp中,现有用户可以将邀请转发给他们的朋友。我根本不需要核实那些邀请。相反,我只想警告我的用户,如果输入错误等可能会向错误的人发送邀请。这样做值得吗?您可以在服务器上进行dns查找。下面是代码项目的一个示例: [增编]: 这应该可以回答你的问题,但作为补充,我同意@Franci的观点,即发送验证消息的旧备用方式更好。如果有人做

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



我应该注意,在我的webapp中,现有用户可以将邀请转发给他们的朋友。我根本不需要核实那些邀请。相反,我只想警告我的用户,如果输入错误等可能会向错误的人发送邀请。这样做值得吗?

您可以在服务器上进行dns查找。下面是代码项目的一个示例:

[增编]:
这应该可以回答你的问题,但作为补充,我同意@Franci的观点,即发送验证消息的旧备用方式更好。如果有人做了所有其他正确的事情来愚弄你的验证,那么你在检查域时真的不会买太多东西。

我通常让我使用的任何邮件组件来处理域验证。如果出现错误,您可以用代码处理,并决定是否向用户显示。

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

如果仍要验证域,则应该对该域的MX记录执行DNS检查,而不是仅检查该域是否已注册


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

完全可以检查域是否是有效的邮件服务器。试一试。

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

 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
但我一开始不推荐这种检查。如果用户不想给你他的电子邮件地址,他总会想办法欺骗你。
您唯一能做的就是发送一封带有验证链接的电子邮件。

无需解析
nslookup
以.NET语言执行DNS查询。有关更好的方法,请参见此答案: