如何通过在C#中向smtp服务器发送请求来检查现实世界中是否存在电子邮件地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过在C#中向smtp服务器发送请求来检查现实世界中是否存在电子邮件地址相关的知识,希望对你有一定的参考价值。

当我向smtp服务器发送请求时,我在smtp连接中收到错误。

IList<MXServer> list = new List<MXServer>();

foreach (string line in result.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
{
    if (line.Contains("MX preference =") && line.Contains("mail exchanger ="))
        {
        MXServer mxServer = new MXServer();
        mxServer.Preference = Int(GetStringBetween(line, "MX preference = ", ","));
        mxServer.MailExchanger = GetStringFrom(line, "mail exchanger = ");

        list.Add(mxServer);
    }
}
答案

通过使用SMTP,您可以询问服务器是否有用户。 SMTP是基于文本的协议。但有一些重点:

  1. 每个服务器都会以这种方式或那种方式检查垃圾邮件。所以你的IP地址必须是干净的。 (不列入垃圾邮件列表)
  2. 即使您的IP是干净的,反复询问地址可能会导致您的IP被禁止
  3. 大多数服务提供商禁止smtp端口。所以你可能需要一个静态IP地址。
  4. 大多数服务器检查入站连接的反向DNS记录。所以你可能需要反向DNS(PTR)记录。
  5. 你可能需要一张SPF记录。
  6. 有两种方法可以询问SMTP服务器:a。 VRFY命令b。 RCPT TO
  7. 由于安全原因,大多数服务器都没有回复VRFY

这是一个SMTP会话示例:

C: MAIL FROM:<mail@samlogic.com>
S: 250 OK
C: RCPT TO:<john@mail.com>
S: 250 OK
C: RCPT TO:<peggy@mail.com>
S: 250 OK 

基本上如果你得到250 ...回答RCPT TO命令90%的电子邮件地址是好的。然后你可以中止连接。

以上是关于如何通过在C#中向smtp服务器发送请求来检查现实世界中是否存在电子邮件地址的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中向 API 服务器发送请求 POST 消息?

如何在ios中向soap webservice发送请求?

如何使用 Gmail 的 SMTP 客户端在 C# 中向自己发送电子邮件,而无需在 Gmail 设置中启用安全性较低的应用程序的访问权限?

如何在 python 中向 Gmail-API 发送批处理请求?

Node js中向rest服务发送https请求的步骤

Node js中向rest服务发送https请求的步骤