【问题标题】:Can't send email through Gmail account in ASP.NET无法通过 ASP.NET 中的 Gmail 帐户发送电子邮件
【发布时间】:2016-05-28 14:52:02
【问题描述】:

我在使用我的 gmail 帐户通过 ASP.NET 应用程序发送简单电子邮件时遇到问题。我已经尽我所能寻求帮助,但由于某种原因,它一直给我一个错误,并且没有发送任何电子邮件。

这是我设置为在按下按钮时触发的代码:

protected void SubmitButton_Click(object sender, EventArgs e)
{
    System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
    mail.To.Add(new System.Net.Mail.MailAddress("an email address"));
    mail.From = new System.Net.Mail.MailAddress("From Email Address");
    mail.Subject = "PDMS New User Request";
    mail.IsBodyHtml = true;
    mail.Body = "A new user has requested access" + "\n\n"
        + "Name: " + inputFName.Text.ToString() + " " + inputLName.Text.ToString()
        + "\n"
        + "Organization: " + inputOrg.Text.ToString()
        + "\n"
        + "Email: " + inputEmail.Text.ToString()
        + "\n\n"
        + "Please contact them with their login information"
        + "-PDMS System Message";
    mail.IsBodyHtml = true;
    System.Net.Mail.SmtpClient systemEmail = new System.Net.Mail.SmtpClient();
    systemEmail.UseDefaultCredentials = false;
    systemEmail.Credentials=new System.Net.NetworkCredential("From email address", "From Email Addresses' password");
    systemEmail.Port = 587 ;
    systemEmail.Host="smtp.gmail.com";
    systemEmail.EnableSsl=true;
    systemEmail.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
    try
    {
        systemEmail.Send(mail);
        Label1.Visible = true;
        Label2.Visible = false;
    }
    catch (Exception ex)
    {
        Label2.Text = "Email could not be sent due to errors";
    }

我错过了什么?我似乎无法让此代码实际发送任何内容 - Gmail 中是否有我需要先配置的设置?

【问题讨论】:

  • 你遇到了什么错误?
  • 阅读错误信息。
  • 异常应该告诉你你的问题是什么。
  • 删除异常内的标签更多参考检查我的解决方案
  • 我发生的异常是“System.IO.IOException:无法从传输连接读取数据:net_io_connectionclosed。”。我不确定问题是什么。我没有启用两因素身份验证,我启用了不太安全的应用程序,并且我的用户名和密码是正确的。

标签: c# asp.net email smtp smtp-auth


【解决方案1】:

我无法知道您遇到的错误是什么,但是是的,您需要在您的 gmail 帐户中完成一项设置,然后才能开始使用代码发送邮件。请从您的 google 帐户打开以下页面并打开访问不太安全的应用程序。

https://www.google.com/settings/security/lesssecureapps

请注意,如果您已为您的 Google 帐户开启两步验证,那么您将不会在上述页面上看到了解详情链接。从那里您可以为您的 google 帐户创建应用程序专用密码,然后该应用程序将能够通过您的 google 帐户访问和发送邮件。

如果这不能解决您的问题,请编辑您的帖子并添加您收到的确切错误跟踪,以便我们进行调查。

【讨论】:

    【解决方案2】:

    删除Catch中的标签并抛出异常。然后我们可以轻松识别确切的异常,否则它会显示标签默认文本。

    try
    {
        systemEmail.Send(mail);
        Label1.Visible = true;
        Label2.Visible = false;
    }
    catch (Exception ex)
    {
        throw ex;//throw the exception
    }
    

    解决方案:

    我认为您正面临 5.5.1 需要身份验证

    以下步骤将解决您的异常。

    • 输入正确的登录密码。
    • 移除两步验证。
    • 您必须为您的 google 帐户启用从其他时区/IP 登录。要执行此操作,请按照Click Here 并通过单击继续按钮允许访问。
    • 通过以下Click here 转到安全设置并启用安全性较低的应用程序。这样您就可以从所有应用程序登录。

    【讨论】:

      【解决方案3】:

      试试这个......我以前用过它,所以它可能会工作

      `
      公共无效发送电子邮件() {

              MailMessage msg;
              string emailId = string.Empty;
              msg = new MailMessage();
              SmtpClient smtp = new SmtpClient();
      
              //sender email address
              msg.From = new MailAddress("youremail@gmail.com");
      
             //Receiver email address
              msg.To.Add("receiver@gmail.com");
              //email message subject
              msg.Subject = "some string";
              //email message body
              msg.Body = "Some string".Trim();
              msg.IsBodyHtml = true;
              smtp.Credentials = new NetworkCredential("yourEmail@gmail.com","yourpassword");
              smtp.Port = 587;
              smtp.Host = "smtp.gmail.com";
              smtp.EnableSsl = true;
              smtp.Send(msg);
          }`
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-15
        • 2011-07-16
        • 1970-01-01
        • 2016-08-26
        • 2011-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多