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

问题描述 投票:0回答:1

当我向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);
    }
}
c# .net email smtp
1个回答
1
投票

通过使用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:<[email protected]>
S: 250 OK
C: RCPT TO:<[email protected]>
S: 250 OK
C: RCPT TO:<[email protected]>
S: 250 OK 

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

© www.soinside.com 2019 - 2024. All rights reserved.