【问题标题】:How to check if email inbox exists on a remote server如何检查远程服务器上是否存在电子邮件收件箱
【发布时间】:2014-04-15 04:38:20
【问题描述】:

是否有用于检查远程服务器上是否存在电子邮件收件箱的 API? my-addr.com 做得很好,并提出了一些关于盒子的令人惊讶的高级信息。

  • john@gmail.com:“您尝试访问的电子邮件帐户已超出配额。请直接”
  • whatsup@gmail.com:“gsmtp / 电子邮件存在”
  • asdfasdf19293949@gmail.com:“您尝试访问的电子邮件帐户不存在。”

我链接到的工具将这个过程称为“反向电子邮件查找”,但搜索该过程会引发“从电子邮件地址查找人员”和其他类似工具。

这是如何工作的?有没有办法直接从 PHP 或 C# 执行此操作?

【问题讨论】:

    标签: c# php email smtp inbox


    【解决方案1】:

    我想你会发现很多时候这些功能会欺骗你来打败垃圾邮件发送者。如果有一种方法可以确认电子邮件是否真实,而不是让用户单击验证(或取消订阅……)链接,那么垃圾邮件发送者会一直使用它

    验证电子邮件地址的最佳方法是向用户发送包含链接的电子邮件,并让他们单击链接以验证他们是否收到了电子邮件。也就是说,您唯一的选择是 SMTP RCPT TO 或 VRFY 命令。

    RCPT TO 可能是一种检查方式,只要您在发出后断开连接即可。但是,如果帐户不存在,并非所有服务器都会启动您

    VRFY 可以告诉您该服务器上是否存在帐户,但几乎总是被禁用以防止帐户探测。

    进行 RCPT TO 验证的 PHP 类是:http://code.google.com/p/php-smtp-email-validation/

    【讨论】:

      【解决方案2】:

      我在my-addr.com's TOU 中没有看到任何禁止以编程方式使用它的内容:既然您对网站的结果感到满意,您可以考虑(即在技术上、法律上和道德上权衡)使用 my- addr.com 本身就是一个“API”。

      作为起点,这里是 Fiddler Request to Code C#,用于我执行的快速邮箱存在性检查:

      private void MakeRequests()
      {
          HttpWebResponse response;
      
          if (Request_my_addr_com(out response))
          {
              response.Close();
          }
      }
      
      private bool Request_my_addr_com(out HttpWebResponse response)
      {
          response = null;
      
          try
          {
              HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://my-addr.com/email/?mail=baz%40gmail.com&x=0&y=0");
      
              request.KeepAlive = true;
              request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
              request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36";
              request.Referer = "http://my-addr.com/email/?mail=foo%40gmail.com&x=15&y=12";
              request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip,deflate,sdch");
              request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.8");
              request.Headers.Set(HttpRequestHeader.Cookie, @"PHPSESSID=ne655jvfdte82b94gn0oumegj6");
      
              response = (HttpWebResponse)request.GetResponse();
          }
          catch (WebException e)
          {
              if (e.Status == WebExceptionStatus.ProtocolError) response = (HttpWebResponse)e.Response;
              else return false;
          }
          catch (Exception)
          {
              if(response != null) response.Close();
              return false;
          }
      
          return true;
      }
      

      【讨论】:

      • 不错的尝试,但每天限制为 30 个!必须找到合适的方法来做这件事……或者支付批量检查费用……email-verify.my-addr.com/…
      猜你喜欢
      • 2012-12-31
      • 2020-04-16
      • 2012-06-13
      • 2010-12-12
      • 2015-06-10
      • 2011-10-22
      • 2022-08-03
      • 2011-06-07
      • 1970-01-01
      相关资源
      最近更新 更多