gpt4 book ai didi

java - 验证硬退回的电子邮件 ID

转载 作者:太空宇宙 更新时间:2023-11-03 17:49:08 26 4
gpt4 key购买 nike

我尝试过搜索,但我只获得了在线付费服务,没有代码来测试给定的电子邮件地址确实存在,因此我可以防止硬退回。

请看下面的代码,它只能检查域。需要帮助是可能的。解决方案可以是任何语言,PHP(首选)、JAVA.NETRudy

public function check_domain($email)
{
if( ! (bool) checkdnsrr(preg_replace('/^[^@]++@/', '', $email), 'MX'))
{
return FALSE;
}

return TRUE;
}

更新

使用在线服务它会显示类似这样的内容

MX record found: mta6.am0.yahoodns.net (Priority 1)
MX record found: mta5.am0.yahoodns.net (Priority 1)
MX record found: mta7.am0.yahoodns.net (Priority 1)
Connecting to mta6.am0.yahoodns.net
Connected to mta6.am0.yahoodns.net
Dialog with mta6.am0.yahoodns.net ok
------------------------------------------------------------
220 mta1278.mail.bf1.yahoo.com ESMTP ready
HELO verifyemailaddress.org
250 mta1278.mail.bf1.yahoo.com
MAIL FROM: <noreply@verifyemailaddress.org>
250 sender <noreply@verifyemailaddress.org> ok
RCPT TO: <xxxxx@yahoo.com>
250 recipient <xxxxxx@yahoo.com> ok
QUIT
221 mta1278.mail.bf1.yahoo.com
------------------------------------------------------------
Email address xxxxxx@yahoo.com accepted

他们到底在做什么,发送电子邮件??

最佳答案

至少,需要打开到接收服务器的 SMTP 连接,以检查电子邮件地址是否存在。实际上不需要发送电子邮件。如果电子邮件不存在,大多数电子邮件服务器将以错误响应 RCPT TO 命令。此时,可以发送 QUIT 命令,而无需实际发送电子邮件。某些电子邮件服务器还允许您发出 VRFY 命令来测试地址,但这并未得到广泛支持。

这就是电子邮件验证服务的工作原理。他们执行这些握手,然后存储结果。这就是您在提供的示例中看到的情况;客户端在RCPT TO 之后QUIT

还有一些其他的选择:

  1. 最基本的 - 测试电子邮件地址是否具有有效结构。此页面有一个正则表达式来检查 - http://www.regular-expressions.info/email.html

  2. 更高级 - 取决于您尝试防止硬退回的目的。我曾经考虑过将启发式方法放在例如用户名应至少 X 个字符长,域 Y 个字符长,但已放弃。单字符用户名有效;我不确定域名的最低限度。如果有人想打破这些规则,那是微不足道的;所以没有意义。

  3. 更高级 - 当您遇到新域时,连接到接收 SMTP 服务器并开始 SMTP 握手。检查对 RCPT TO 命令的响应。

  4. 使用 Kickbox 等电子邮件验证服务。这些服务会查看许多电子邮件地址,并且通常会缓存相关数据并准备好使用,无需等待或无需执行握手。

  5. 为什么不简单地发送电子邮件并要求用户单击链接。这就是许多服务已经开始做的事情。剔除硬反弹。此外,它确保订阅者提供他们拥有的电子邮件地址。

关于java - 验证硬退回的电子邮件 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28169437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com