Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过向C中的smtp服务器发送请求来检查现实世界中是否存在电子邮件地址#_C#_.net_Email_Smtp - Fatal编程技术网

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

C# 如何通过向C中的smtp服务器发送请求来检查现实世界中是否存在电子邮件地址#,c#,.net,email,smtp,C#,.net,Email,Smtp,向stmp服务器发送请求时,smtp连接出错 IList<MXServer> list = new List<MXServer>(); foreach (string line in result.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)) { if (line.Contains("MX preference =") &&

向stmp服务器发送请求时,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);
    }
}
IList list=new list();
foreach(result.Split中的字符串行(新字符串[]{Environment.NewLine},StringSplitOptions.RemoveEmptyEntries))
{
if(line.Contains(“MX preference=”)&&line.Contains(“邮件交换器=”))
{
MXServer MXServer=新的MXServer();
mxServer.Preference=Int(GetStringBetween(第行,“MX Preference=”,“,”);
mxServer.MailExchanger=GetStringFrom(第行,“mail exchanger=”);
添加(mxServer);
}
}

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

  • 每台服务器都会以这种或那种方式检查垃圾邮件。因此,您的IP地址必须是干净的。(不在垃圾邮件列表中列出)
  • 即使您的IP是干净的,反复询问地址也可能导致您的IP被禁止
  • 大多数服务提供商禁止smtp端口。因此,您可能需要一个静态IP地址
  • 大多数服务器检查入站连接的反向DNS记录。因此,您可能需要反向DNS(
    PTR
    )记录
  • 您可能需要一个
    SPF
    记录
  • 有两种方法可以询问SMTP服务器:a<代码>VRFY命令b<代码>RCPT至
  • 由于安全原因,大多数服务器未回复
    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 
    
    C:MAIL-FROM:
    S:250好的
    C:RCPT至:
    S:250好的
    C:RCPT至:
    S:250好的
    

    基本上,如果您得到
    250…
    回答
    RCPT TO
    命令,电子邮件地址就可以了。然后您可以中止连接。

    标准方法是,向他们发送一封带有时间相关令牌的电子邮件,并让他们通过web请求进行验证。想想看,你最后一次填写表格时,表格上写着:“对不起,这不是你的真实电子邮件地址,你撒谎了!”!您的实现应该更多地围绕“验证电子邮件地址”?一旦用户提供了一个。