如何使用ASP.NET、C#和GMail发送电子邮件
我曾尝试使用GMail SMTP发送电子邮件,并遵循了其他各种问题的指南,但我仍然无法从我的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
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);
}
}
到目前为止,我已经检查了以下内容:
还有什么我可能遗漏的吗?在调用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;