检查电子邮件地址是不是存在[重复]
Posted
技术标签:
【中文标题】检查电子邮件地址是不是存在[重复]【英文标题】:Checking if an email address exists [duplicate]检查电子邮件地址是否存在[重复] 【发布时间】:2011-08-17 21:41:50 【问题描述】:可能重复:How to check if an email address exists without sending an email?
如何检查电子邮件地址是否确实存在(不仅仅是验证)?这些人是怎么做到的:http://www.email-unlimited.com/tools/verify-email.aspx
它似乎工作......
【问题讨论】:
他们不能,不是以任何可靠的方式。这很可能只是一个收集电子邮件地址的骗局。 见this。 @Charlesworth:我认为它也可能是骗局......但我确实尝试了一堆电子邮件地址(尤其是在我特别感兴趣的域中)并且它确实有效。即使它在所有情况下都不可靠,我也想知道他们可能是如何编码的,因为至少我知道它适用于我感兴趣的域。 无法回答这个问题,所以只是对此发表评论,最好的想法正如 Mudassar 所说的here 是:您需要将激活码发送到他的电子邮件,然后询问用户在您的网站上输入它,可以在 here 和 here 找到在 asp mvc 中执行此操作的示例,希望将来对某人有所帮助。 【参考方案1】:SMTP 协议的命令 RCPT 接收服务器上的邮箱,如果该邮箱存在,可能返回“ok”代码。请注意,有些服务器不这样做是为了防止垃圾邮件发送者扫描有效地址。
email-unlimited 的作用如下:
-
使用电子邮件域查找 SMTP 服务器
启动与该 SMTP 服务器的会话并向其发送命令 RCPT TO:
结束会话
如果 SMTP 服务器在步骤 2 中返回“ok”代码,则他们认为邮箱存在。
【讨论】:
【参考方案2】:在链接中找到这个:http://wiki.cdyne.com/index.php/CSharp_Email_Verification
-
打开一个新的/现有的项目。
在解决方案资源管理器中,右键单击要添加服务的项目,然后选择“添加 Web 引用”。如果未列出“添加 Web 引用”,请选择“添加服务引用”,然后选择“高级”,然后选择“添加 Web 引用”。
将用于电子邮件验证的 WSDL 放在 URL 块中。 (例如:http://ws.cdyne.com/emailverifyws/emailverify.asmx?wsdl)
将“Web Reference Name”更改为更实用的名称,例如“EmailVerify”。
//Instantiate EmailVerify
EmailVerify.EmailVerify ev = new EmailVerify.EmailVerify();
//Assign ReturnValues to the VerifyEmail method and pass in: email and License Key
EmailVerify.ReturnValues rv = ev.VerifyEmail("info@cdyne.com", "0");
//Assign ReturnValues to the VerifyEmailWithTimeout method and pass in: email, timeout, and License Key
EmailVerify.ReturnValues rvt = ev.VerifyEmailWithTimeout("info@cdyne.com", "5", "0");
//Get the response for VerifyEmail (you can choose which returns to use)
Console.WriteLine(rv.ValidLicenseKey);
Console.WriteLine(rv.CorrectSyntax);
Console.WriteLine(rv.EmailDomainFound);
Console.WriteLine(rv.EmailDisposable);
Console.WriteLine(rv.DomainVerifiesEmail);
Console.WriteLine(rv.DomainAcceptsMail);
Console.WriteLine(rv.EmailVerified);
Console.WriteLine(rv.Timeout);
Console.WriteLine(rv.DomainServersDown);
Console.WriteLine(rv.GoodEmail);
//Get the response to VerifyEmailWithTimeout (only using chosen responses)
Console.WriteLine(rvt.EmailDisposable);
Console.WriteLine(rvt.DomainVerifiesEmail);
Console.WriteLine(rvt.DomainAcceptsMail);
Console.WriteLine(rvt.EmailVerified);
Console.WriteLine(rvt.Timeout);
Console.WriteLine(rvt.DomainServersDown);
Console.WriteLine(rvt.GoodEmail);
【讨论】:
thnx ,我总是喜欢使用服务来做这些事情。 Cdyne 会免费提供更多这样的服务吗? EmailVerify.EmailVerify ev = new EmailVerify.EmailVerify();之后我无法获得 EmailVerify。你确定这是正确的 wsdl 吗?【参考方案3】:您连接到处理电子邮件的域的 SMTP 服务器并询问它。更多信息在这里:
http://www.the-welters.com/professional/smtp.html
【讨论】:
【参考方案4】:如果您尝试该服务,您会看到它连接到 SMTP 服务器并尝试向指定的电子邮件发送电子邮件。重要的是连接到目标帐户的 SMTP 服务器。 SMTP 命令见http://www.yuki-onna.co.uk/email/smtp.html
【讨论】:
以上是关于检查电子邮件地址是不是存在[重复]的主要内容,如果未能解决你的问题,请参考以下文章