Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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# 5.7.0未使用mailkit和strato服务器在asp.net core1中对用户进行身份验证_C#_Email_Asp.net Core_Mailkit - Fatal编程技术网

C# 5.7.0未使用mailkit和strato服务器在asp.net core1中对用户进行身份验证

C# 5.7.0未使用mailkit和strato服务器在asp.net core1中对用户进行身份验证,c#,email,asp.net-core,mailkit,C#,Email,Asp.net Core,Mailkit,在asp.net core 1应用程序中,我正在尝试使用mailkit库(版本1.8.1)向strato服务器发送电子邮件。我的代码: var emailMessage = new MimeKit.MimeMessage(); try { emailMessage.From.Add(new MimeKit.MailboxAddress("Support", "some@test.com")); emailMessage.To.Add(new MimeKit.M

在asp.net core 1应用程序中,我正在尝试使用mailkit库(版本1.8.1)向strato服务器发送电子邮件。我的代码:

  var emailMessage = new MimeKit.MimeMessage();
  try
  {
      emailMessage.From.Add(new MimeKit.MailboxAddress("Support", "some@test.com"));
      emailMessage.To.Add(new MimeKit.MailboxAddress("", "test@test.com"));
      emailMessage.Subject = "Subject";
      var bodyBuilder = new MimeKit.BodyBuilder();
      bodyBuilder.HtmlBody = @"<b>Some body</b>";

      emailMessage.Body = bodyBuilder.ToMessageBody(); 

      using (var client = new MailKit.Net.Smtp.SmtpClient())
      {
          client.Timeout = 15000;
          // Accept all SSL certificates (in case the server supports STARTTLS)
          client.ServerCertificateValidationCallback = (s, c, h, e) => true;

          await client.ConnectAsync("smtp.strato.de", 587, MailKit.Security.SecureSocketOptions.Auto);
          // Note: since we don't have an OAuth2 token, disable
          // the XOAUTH2 authentication mechanism.
          client.AuthenticationMechanisms.Remove("XOAUTH2");

          // Note: only needed if the SMTP server requires authentication
          await client.AuthenticateAsync(login, passord);

          await client.SendAsync(emailMesage);//here error!
          await client.DisconnectAsync(true);
      }
      return true;
  }
  catch (System.Exception)
  {
      return false;
  } 
var emailMessage=new MimeKit.MimeMessage();
尝试
{
emailMessage.From.Add(新的MimeKit.MailboxAddress(“支持”),“some@test.com"));
emailMessage.To.Add(新的MimeKit.MailboxAddress(“,”test@test.com"));
emailMessage.Subject=“Subject”;
var bodyBuilder=new MimeKit.bodyBuilder();
bodyBuilder.HtmlBody=@“某个身体”;
emailMessage.Body=bodyBuilder.ToMessageBody();
使用(var client=new MailKit.Net.Smtp.SmtpClient())
{
client.Timeout=15000;
//接受所有SSL证书(如果服务器支持STARTTLS)
client.ServerCertificateValidationCallback=(s、c、h、e)=>true;
等待client.ConnectAsync(“smtp.strato.de”,587,MailKit.Security.SecureSocketOptions.Auto);
//注意:由于我们没有OAuth2令牌,请禁用
//XOAUTH2身份验证机制。
client.authenticationMechaniss.Remove(“XOAUTH2”);
//注意:仅当SMTP服务器需要身份验证时才需要
等待client.authenticateSync(登录,密码);
等待client.SendAsync(emailMesage);//此处出错!
等待client.DisconnectAsync(true);
}
返回true;
}
捕获(系统异常)
{
返回false;
} 
当我试图发送电子邮件时,我收到5.7.0用户未通过身份验证的错误,尽管身份验证已通过。同样的代码,例如,gmail也可以正常工作

有没有办法解决这个问题

client.EnableSsl = true;   Add this to your code

电子邮件(SMTP)错误代码

5.5.1语法错误,无法识别命令

5.5.0已指定发件人电子邮件地址

5.5.1 RCPT前需要邮件

5.4.4未找到主机(不在DNS中)

5.1.1邮箱不存在

5.1.3错误的电子邮件地址语法

5.1.8发件人电子邮件地址域不存在

5.1.8发件人地址被地址筛选器拒绝

5.7.1中继被拒绝


问题是smtp.strato.de在smtp客户端在身份验证后发送EHLO命令时会重置其身份验证状态,即使规范强烈建议客户端应该这样做

换句话说,smtp.strato.de已损坏

也就是说,您可以通过执行以下操作来解决此问题:

client.QueryCapabilitiesAfterAuthenticating = false;

只要在进行身份验证之前将该属性设置为false,它就会工作。

smtpclient不包含启用SSL属性的定义我们已检查黑名单-我们不在那里。日志文件显示以下内容:C:MAIL FROM:BODY=8BITMIME C:RCPT TO:S:530 5.7.0未经身份验证的用户S:503 5.5.1首先需要邮件如何处理此错误?谢谢!和伟大的图书馆!
client.QueryCapabilitiesAfterAuthenticating = false;