【问题标题】:Can't send mails in C# : Error in system.dll无法在 C# 中发送邮件:system.dll 中的错误
【发布时间】:2015-08-07 22:12:49
【问题描述】:

我正在尝试使用此代码,以便使用他输入的邮件将他的密码发送给用户。

SmtpClient client = new SmtpClient();
client.Port = 587;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
client.Timeout = 10000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("fzc.solutions@gmail.com", "********");
//de qui, a qui, objet, sujet
MailMessage mm = new MailMessage("bluepenlabs.aux@gmail.com", "fzc.solutions@gmail.com", "test", "test");
mm.BodyEncoding = UTF8Encoding.UTF8;
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
client.Send(mm);

这是错误:

一个异常非 gérée du type 'System.Net.Mail.SmtpException' s'est 产品 dans System.dll

信息补充:Le serverur SMTP requiert une connexion 确保客户 n'était pas authentifié。服务响应 était:需要 5.5.1 身份验证。了解更多信息,请访问

我会在这里翻译:

“System.Net.Mail.SmtpException”类型的未处理异常 发生在 System.dll 中

附加信息:SMTP 服务器需要安全连接 或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证。了解更多信息,请访问

虽然我尝试使用两个不同的 gmails 帐户,但同样的错误,我确信密码是正确的。当我将端口更改为 465 时,出现此错误:

“System.Net.Mail.SmtpException”类型的未处理异常 发生在 System.dll 附加信息:操作超时。

我必须将 Timeout 设置为 10000、20000 甚至 100000,但仍然没有!

请帮忙谢谢!

【问题讨论】:

    标签: c# email smtp gmail


    【解决方案1】:

    请注意,如果您尝试了几次都没有成功,gmail 会“锁定”该帐户。我用我的私人 gmail 帐户尝试了不同的代码示例,但一切都失败了。当我阅读了来自 GMail 的要求后,我创建了一个新的 gmail 帐户并获得了相同的代码。

    代码与您的代码非常相似,但 NetworkCredentials 除外。这是来自另一个 StackOverflow 问题的代码(使用我的私人帐户尝试但没有成功,因为多次尝试):Send email using System.Net.Mail through gmail

      //Code
      MailMessage mail = new MailMessage();
      mail.From = new System.Net.Mail.MailAddress("***@gmail.com");
      SmtpClient smtp = new SmtpClient();
      smtp.Port = 587; 
      smtp.EnableSsl = true;
      smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 
      smtp.UseDefaultCredentials = false; 
      smtp.Credentials = new NetworkCredential(mail.From.Address, "****");  
      smtp.Host = "smtp.gmail.com";
    
      //recipient
      mail.To.Add(new MailAddress("***@gmail.com"));
    
      mail.IsBodyHtml = true;
      string st = "Test";
    
      mail.Body = st;
      smtp.Send(mail);
    

    【讨论】:

    • 谢谢,是的,这行得通,但我在 Live SMTP 上使用了相同的代码并且它行得通!
    【解决方案2】:

    Gmail 帐户默认禁用低安全应用访问。 可以通过在安全选项下授予对您电子邮件帐户中低安全性应用的访问权限来修复此错误。

    【讨论】:

    • edit您的回答,以确保不需要提问者的澄清。
    猜你喜欢
    • 2017-03-08
    • 2018-01-18
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多