【问题标题】:Verifying an email address exist in C#验证 C# 中是否存在电子邮件地址
【发布时间】:2011-03-04 00:24:59
【问题描述】:

关于this post邮箱验证,

使用 C#,你会怎么做

  1. 发出 VRFY 命令
  2. 发出 RCPT 命令

【问题讨论】:

  • 如果你看一下 Sean Edwards 的回答,我认为这应该符合方法,尽管我在这里同意其他人的观点,因为 90% 的电子邮件服务器,这并不是最好的做法可能会骗你。

标签: c# email smtp email-verification


【解决方案1】:

我想您会发现,在许多情况下,这些功能会故意欺骗您以击败垃圾邮件发送者。如果除了让用户单击验证(或取消订阅……)链接之外,还有其他方法可以确认电子邮件是真实的,那么垃圾邮件发送者将是非常高兴的人。

需要明确的是,验证电子邮件地址的最佳方法是向用户发送包含链接的电子邮件,然后等待他们单击链接以验证他们是否收到了电子邮件。任何其他技术(公司/内部网环境除外)都应该失败和/或撒谎以击败垃圾邮件发送者。

【讨论】:

  • 感谢您的建议,但问题不是“验证电子邮件的最佳方法是什么”。
  • 是的。 Spence's 是一个答案。
  • 通常在面对这样的需求时,对为什么需要这样做进行根本原因分析会更有用。事实证明,客户已经看到使用“受保护”电子邮件地址的人,这要求首次发件人在邮件实际送达之前单击链接。继续使用传统的电子邮件地址验证(电子邮件中的链接)并添加一些额外的文本要求提供电子邮件的人提前将特定的电子邮件 ID“列入白名单”(例如:verification@example.net)会更简单。跨度>
【解决方案2】:

IMO,RCPT 方法是最好的,我仍然每天都在使用它。

这里是必要的代码:http://mailsystem.codeplex.com/SourceControl/changeset/view/51422#541825

类比较重,你得从源码中挑选你需要的代码sn-p。

【讨论】:

    【解决方案3】:

    有一个很好的项目here 使用代码 sn-ps 来说明如何实现这一点,但正如 Spence 所说,它们可能并不总是正常工作。

    【讨论】:

    • 我也会推荐这个。你应该去看看肯。
    【解决方案4】:

    如果您不担心公共 SMTP 服务器会欺骗您(请参阅此处的第 2.11 节:https://www.rfc-editor.org/rfc/rfc2505),那么最好的方法实际上可能是向服务器打开一个 TcpClient 并运行 SMTP 协议你自己。 SMTP 是一个非常非常简单的协议。你几乎可以从 Wikipedia 中学到所有你需要知道的东西:http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol

    【讨论】:

      【解决方案5】:

      通常。

      • VRFY:算了。说真的 ;) 没有服务器会回答 - 没有一个理智的人。垃圾邮件发送者使用过多。

        • 其余的:使用 TCP 连接到服务器,“就这么做”(即,对 SMTP 握手进行编程,然后继续)。

      【讨论】:

        【解决方案6】:

        你可以尝试使用类似的东西:

        http://www.vcskicks.com/download-file-ftp.php

        不要使用 Ftp,而是使用 SMTP。

        【讨论】:

          猜你喜欢
          • 2012-10-30
          • 2011-02-14
          • 1970-01-01
          • 2019-05-29
          • 1970-01-01
          • 2011-08-30
          • 2021-07-03
          • 2011-08-22
          相关资源
          最近更新 更多