如何通过Gmail发送带有C#的电子邮件

尝试通过我的Web服务发送电子邮件时收到错误。 我已尝试启用访问不太安全的应用程序,禁用两步validation并通过Web浏览器登录帐户。 SO的解决方案都没有对我有用。 我还在:

错误:System.Net.Mail.SmtpException:SMTP服务器需要安全连接或客户端未经过身份validation。 服务器响应为:5.5.1需要身份validation。

我该怎么做才能解决这个问题?

namespace EmailService { public class Service1 : IService1 { public string SendEmail(string inputEmail, string subject, string body) { string returnString = ""; try { MailMessage email = new MailMessage(); SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com"; // set up the Gmail server smtp.EnableSsl = true; smtp.Port = 587; smtp.Credentials = new System.Net.NetworkCredential("myemail@gmail.com", "mypassword"); smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.UseDefaultCredentials = false; // draft the email MailAddress fromAddress = new MailAddress("cse445emailservice@gmail.com"); email.From = fromAddress; email.To.Add(inputEmail); email.Subject = body; email.Body = body; smtp.Send(email); returnString = "Success! Please check your e-mail."; } catch(Exception ex) { returnString = "Error: " + ex.ToString(); } return returnString; } } } 

只需转到此处: 安全性较低的应用程序 ,使用您的电子邮件和密码登录,用于在您的c#代码中发送邮件,然后选择启用。

另请访问此链接,然后点击继续 允许访问您的Google帐户

我也稍微编辑一下:

 public string sendit(string ReciverMail) { MailMessage msg = new MailMessage(); msg.From = new MailAddress("YourMail@gmail.com"); msg.To.Add(ReciverMail); msg.Subject = "Hello world! " + DateTime.Now.ToString(); msg.Body = "hi to you ... :)"; SmtpClient client = new SmtpClient(); client.UseDefaultCredentials = true; client.Host = "smtp.gmail.com"; client.Port = 587; client.EnableSsl = true; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.Credentials = new NetworkCredential("YourMail@gmail.com", "YourPassword"); client.Timeout = 20000; try { client.Send(msg); return "Mail has been successfully sent!"; } catch (Exception ex) { return "Fail Has error" + ex.Message; } finally { msg.Dispose(); } } 

如果上述代码不起作用,请尝试更改它,如下面的代码:

  SmtpClient client = new SmtpClient(); client.Host = "smtp.gmail.com"; client.Port = 587; client.EnableSsl = true; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential("YourMail@gmail.com", "YourPassword");