我需要发送数百个简报,但是想先查看服务器上是否存在电子邮件.根据我对互联网的研究,它被称为SMTP验证,至少我是这么认为的.
有几个库可以做到这一点,还有一个在ASP Classic中有开源代码的页面(http://www.coveryourasp.com/ValidateEmail.asp#Result3),但是我很难阅读ASP Classic,似乎它使用了一些第三方库......
是否有一些用于C#中的SMTP验证的代码,和/或其工作原理的一般说明?
请注意,出于垃圾邮件保护原因,大多数MTA(邮件传输代理)都会关闭VRFY命令,如果您连续尝试多个RCPT TO,它们甚至可能会阻止您(请参阅http://www.spamresource.com/ 2007/01/what-happen-to-vrfy.html).因此,即使您找到一个库来进行验证,也不会有太多价值.Ishmaeel是对的,真正找到答案的唯一方法是发送电子邮件,看看它是否反弹.
@Hrvoje:是的,我建议您监控被拒绝的电子邮件.但是:并非所有退回的邮件都应自动结束您的"不存在"列表,您还必须区分临时(例如邮箱已满)和永久性错误.
SMTP是通过TCP/IP承载的基于文本的协议.
您的验证程序需要打开到服务器端口25(SMTP)的TCP/IP连接,写几行并阅读答案.验证在"RCTP TO"行和"VFRY"行上完成(但不总是).
的 SMTP RFC描述这是如何工作(见下面Green@Beta.ARPA,S是由客户端发送线路,R是行从服务器接收到):
Example of the SMTP Procedure This SMTP example shows mail sent by Smith at host Alpha.ARPA, to Jones, Green, and Brown at host Beta.ARPA. Here we assume that host Alpha contacts host Beta directly. S: MAIL FROM: R: 250 OK S: RCPT TO: R: 250 OK S: RCPT TO: R: 550 No such user here