如何使用ASP.NET、C#和GMail发送电子邮件

如何使用ASP.NET、C#和GMail发送电子邮件,c#,asp.net,email,gmail,C#,Asp.net,Email,Gmail,我曾尝试使用GMail SMTP发送电子邮件,并遵循了其他各种问题的指南,但我仍然无法从我的GMail帐户发送电子邮件 这是我正在使用的代码: protected void emailSend_Click(object sender, EventArgs e) { var fromAddress = new MailAddress(inputEmail.Text, inputName.Text); var toAddress = n

我曾尝试使用GMail SMTP发送电子邮件,并遵循了其他各种问题的指南,但我仍然无法从我的GMail帐户发送电子邮件

这是我正在使用的代码:

protected void emailSend_Click(object sender, EventArgs e)
        {
            var fromAddress = new MailAddress(inputEmail.Text, inputName.Text);
            var toAddress = new MailAddress("spikey666@live.co.uk", "Liane Stevenson");
            const string fromPassword = "*********";
            const string subject = "Web Dev Wolf Message";
            var body = inputMessage.Text;

            var smtp = new SmtpClient
            {
                Host = "smtp.gmail.com",
                Port = 587,
                EnableSsl = true,
                DeliveryMethod = SmtpDeliveryMethod.Network,
                Credentials = new NetworkCredential("webdevelopwolf@gmail.com", fromPassword),
                Timeout = 20000
            };
            using (var message = new MailMessage(fromAddress, toAddress)
            {
                Subject = subject,
                Body = body
            })
            {
                smtp.Send(message);
            }
        }
到目前为止,我已经检查了以下内容:

  • 在GMail上打开不太安全的应用程序
  • 检查Gmail用户名和密码是否正确
  • 调试并检查所有文本字段是否有值并加载到变量中
  • 检查Gmail帮助建议的其他端口号
  • 在Gmail上打开POP/IMAP功能

  • 还有什么我可能遗漏的吗?

    在调用SmtpClient.Send()之前,请添加:


    根据,UseDefaultCredentials在默认情况下设置为false,但似乎有一个bug将其设置为true。在发送邮件之前,请将其显式设置为false,并且应将其全部设置。

    我使用SmtpClient从C#app发送电子邮件,虽然我不记得为什么,但在发送邮件之前,我需要设置“smtp.UseDefaultCredentials=false;”。您说过它不会发送邮件。但是你有例外吗?为什么是
    smtp.Send(message)
    在它自己的代码块中?@LianeStevenson好吧,显然你应该仔细阅读一下这个语句。@LianeStevenson把send命令放在它自己的代码块中,就像你没有把它放在代码块中一样。新块更改了作用域,但是由于该块中没有声明任何内容,因此应该删除它周围的花括号。由于smtp.Send()可以抛出异常,因此将其包装在try/catch块中并不是一个坏主意:)@QuestionMarks“smtp.UseDefaultCredentials=false;”成功!如果你把它作为答案放进去,我会记下来,以帮助其他人解决这个问题;)
    smtp.UseDefaultCredentials = false;