繁体   English   中英

如何检查电子邮件地址的存在

[英]How to check the existence of an email address

我负责开发一个需要批量上传大量用户数据的应用。 用户的数据之一是电子邮件地址,我们需要确保该电子邮件地址确实存在,以便我们可以发送欢迎消息。

那么,我如何检查电子邮件地址是否真的存在?

您可以使用npm email-validator检查电子邮件地址的格式是否符合RFC5322

const validator = require('email-validator')
...
if (validator.validate('test@email.com')) {
   /* email format is correct */
}

但是您要问的是,是否有一种通用且可靠的方法可以向 intertoobz 询问任何给定的电子邮件地址后面是否有真实的邮箱。

答案是否定的,除非向邮箱发送消息并要求收件人回复。 有一些不可靠的方法来检查邮箱是否存在,但许多邮件传输代理并没有实现它们。 为什么不? 垃圾邮件。

商业邮件服务(Constant Contact、MailChimp、SendGrid)提供将消息发送到邮箱请求许可以订阅电子邮件服务的功能。 邮箱后面的人通常通过单击超链接来响应。 超链接包含一个随机数——一个难以猜测的随机值——用于标识邮箱。 只有在URL点击后才能确定地址存在。 有时,最终用户会被要求使用这种技术“确认您的电子邮件地址”。

这些相同的服务非常适合跟踪电子邮件退回和失败,因此他们可以暂时了解哪些邮箱存在。 他们为了避免发送垃圾邮件会遇到很多麻烦,因为大型电子邮件提供商(gmail、outlook.com、comcast、charter 等)经常将发送电子邮件的服务器列入黑名单,以降低垃圾邮件负载。 当您使用一项服务时,您需要支付大量网络工程工作以防止列入黑名单。

您可以在自己的应用程序中实现类似的“订阅权限”服务,但解释如何做到这一点超出了 StackOverflow 答案的范围。 防止它被列入黑名单? 除非您的音量非常低,否则可能非常困难。

有关更多讨论,请参阅此内容。

我可以使用 .net 检查电子邮件地址是否存在吗?

我使用了 SendGrid.com 的免费服务层,它运行良好。 我也成功地使用了 MailChimp。

您可以使用EmailChecker 之类的服务(我只是在谷歌上进行了快速搜索)来检查电子邮件是否真的存在。

要使用 API,您需要支付高级费用,但您可以在此处查看它的工作原理: https : //email-checker.net

验证电子邮件地址是合法的(例如,可邮寄的)格式是一回事,但它不会告诉您该地址有邮箱。 知道电子邮件地址是否“存在”的唯一方法是向它邮寄一些东西。 如果它 [最终] 反弹,您可以非常确定它不存在。 否则,您所知道的就是某人的 SMTP 服务器接受了该消息。

https://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx/

和这个:

如何在不发送电子邮件的情况下检查电子邮件地址是否存在?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM