如何使用 Gmail SMTP 服务器在 C# 中发送邮件? [复制]

Posted

技术标签:

【中文标题】如何使用 Gmail SMTP 服务器在 C# 中发送邮件? [复制]【英文标题】:How to mail in C# with the Gmail SMTP server? [duplicate] 【发布时间】:2011-05-17 20:41:45 【问题描述】:

可能重复:Sending email through Gmail SMTP server with C#

对于使用 C# 发送邮件和使用 Gmail SMTP 服务器,我们应该做些什么棘手的事情?因为经过大量搜索后,我找到了一些方法来做到这一点,但结果却出现了失败异常。我想这是因为我不处理 Gmail 的 TSL(因为它适用于 TSL),但我不知道如何使用 C# 处理 TSL 来执行此操作。我非常感谢任何帮助或指向有用示例的链接。这是我的代码:

public string SendMail(string senderMail, string receiverMail, string attachmentPath)

  var fromMailAddress = new MailAddress(senderMail);
  var toMailAddress = new MailAddress(receiverMail);

  MailMessage mailMessage = new MailMessage(fromMailAddress, toMailAddress);
  mailMessage.Subject = "My Subject";
  mailMessage.Body = "This is the body of this message for testing purposes";

  Attachment attachFile = new Attachment(attachmentPath);
  mailMessage.Attachments.Add(attachFile);

  SmtpClient emailClient = new SmtpClient();

  NetworkCredential credential = new NetworkCredential();
  credential.UserName = fromMailAddress.User;
  credential.Password = "password";

  emailClient.Credentials = credential;
  emailClient.Port = 587;
  emailClient.Host = "smtp.gmail.com";

  //emailClient.EnableSsl = true; //Here should be for TSL, but how?

  emailClient.Send(mailMessage);

【问题讨论】:

欢迎来到 SO!这是一个很好的问题,并且您附上了正确的代码。但是,之前有人问过类似的问题,请参阅上面的链接。可能是您遇到了特殊异常;在这种情况下,如果您发布异常的确切消息,人们可以更好地帮助您。 你用了三遍“TSL”这个词,但我不知道那是什么。您是说“TLS”吗? 感谢您的指导,是的,我的意思是 TLS:D 这是我的新愚蠢键盘,它让我犯了这些错误,或者我可能是盲人之类的:D。再次感谢您的指导,我真的很感激。 【参考方案1】:

您应该告诉异常消息。 但是,是的,取消注释 emailClient.EnableSsl = true; 如果仍然无法正常工作,则可能是您的防火墙或路由器阻止了这些端口。

【讨论】:

【参考方案2】:

试试下面的代码。这是我长期使用的工作代码。

    // Configure mail client (may need additional
    // code for authenticated SMTP servers).
    SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587);

    // Set the network credentials.
    mailClient.Credentials = new NetworkCredential("YourGmailEmail@gmail.com", "YourGmailPassword");

    //Enable SSL.
    mailClient.EnableSsl = true;

    // Create the mail message (from, to, subject, body).
    MailMessage mailMessage = new MailMessage();
    mailMessage.From = new MailAddress("zain.you2@gmail.com");
    mailMessage.To.Add(to);

    mailMessage.Subject = subject;
    mailMessage.Body = body;
    mailMessage.IsBodyhtml = isBodyHtml;
    mailMessage.Priority = mailPriority;

    // Send the mail.
    mailClient.Send(mailMessage);

参考:Sending Email using a Gmail Account。

【讨论】:

非常感谢,它运行良好。我几乎想安装 IIS 和手动 SMTP 来处理这个问题,但现在我可以完美地使用 GMail,非常感谢。

以上是关于如何使用 Gmail SMTP 服务器在 C# 中发送邮件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# 通过 Gmail SMTP 服务器发送电子邮件

如何在 C# 中使用带有服务帐户的 gmail api 或 google Oauth 来发送邮件?

如何通过 Gmail 使用 C# 发送电子邮件

使用 live/gmail smtp 发送电子邮件

使用gmail smtp c#发送电子邮件[重复]

发送 smtp gmail 电子邮件“发送邮件失败”