【问题标题】:How to verify Email on Server without sending an email? [duplicate]如何在不发送电子邮件的情况下验证服务器上的电子邮件? [复制]
【发布时间】:2014-04-24 07:23:18
【问题描述】:

我想在不发送电子邮件的情况下验证电子邮件地址,因为当我们知道它是无效电子邮件时,我为什么要发送电子邮件

【问题讨论】:

    标签: java email


    【解决方案1】:

    你不能……

    您只能检查该域是否存在或不对该域名发出 DNS MX 请求,即便如此,这也取决于您的操作系统名称解析系统(除非您使用DNS 库);例如,您可能在一个非常严格控制的网络中,它不会让您访问 DNS,但会强制您使用 SMTP 中继(类似于在大量企业网络中您必须使用 HTTP 代理:您无法直接“访问网络”,因为您无法解析主机名。

    即使您知道您的名称解析系统是可靠的,在您将 RCPT TO 发送到 SMTP 服务器之前,您也无法知道该用户是否真的存在。

    现在,如果这是您要检查的邮件地址的语法,请使用 javax.mail 的 InternetAddress

    【讨论】:

      【解决方案2】:

      你可以试试这样的模式:

      private static final Pattern mailPattern= Pattern.compile(
              "^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
      );
      
      if (!mailPattern.matcher(email).matches()) {
          //TODO mail address is invalid.
      }
      

      虽然这仅检查电子邮件格式,而不是 ping 服务器或执行任何其他复杂步骤来处理完整验证。

      【讨论】:

        猜你喜欢
        • 2011-06-06
        • 1970-01-01
        • 2011-12-29
        • 2021-10-21
        • 2013-06-23
        • 2021-03-29
        • 2011-01-22
        • 2021-03-13
        • 2012-09-11
        相关资源
        最近更新 更多