C#通过Gmail帐户发送电子邮件

时间:2019-08-25 09:26:56

标签: c# smtp gmail

我正在使用简单的CMD“服务”扩展我的Web应用程序,该应用程序应向新注册的用户发送验证电子邮件。我的问题是通过对Gmail帐户进行身份验证,其中引发了以下异常:

“ SMTP服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1需要身份验证。”

我已经尝试在自己的IMAP服务器上进行身份验证,但是也没有成功。 后来由于完全取决于本地配置,我尝试使用XAMP Mercury电子邮件服务器,这不是最佳解决方案,因此我放弃了 这个想法。 将来,我只想为该应用创建一个新的Google帐户,因此无需维护。

  String body = "<head>" +
            "Here comes some logo" +
          "</head>" +
          "<body>" +
            "<h1>Account confirmation reqest.</h1>" + Environment.NewLine +
            "<a>Dear User, </a>" + Environment.NewLine +
            "<a>In order to be able to use musicshop app properly, we require You to confirm Your email address.</a>" + Environment.NewLine +
            "<a>This is the last step towards using our app.</a>" + Environment.NewLine +
            "<a>Pleas follow this hyperlink to confirm your address.</a>" + Environment.NewLine +
            "<a>[Callback url]</a>" +
          "</body>";
  try
  {
     SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);
     smtpClient.UseDefaultCredentials = false;
     smtpClient.Credentials = new NetworkCredential()
     {
        UserName = "myemail@gmail.com",
        Password = "mypassword"
     };
     smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
     smtpClient.EnableSsl = true;
     smtpClient.Send("targetemail@targetdomain.xyz", "myemail@gmail.com", "Account verification", body);
  }
  catch (Exception ex)
  {
  }

我只希望能够通过Gmail服务器发送电子邮件,没有任何例外。 我是否需要任何NuGet软件包,使用不同的方法?

1 个答案:

答案 0 :(得分:1)

如果您的Gmail帐户启用了两步验证,则必须创建一个App-Specific Password进行身份验证。

还要注意,SmtpClient是HttpServletRequest-您应将其放在IDisposable块中,以便SMTP连接RSET,QUIT和正确关闭。

==编辑==

此外,您似乎在using (var smtpClient = new SmtpClient("smtp.gmail.com", 587)) { ... }上切换了fromrecipients参数。

smtpClient.Send