【发布时间】:2015-04-15 17:32:04
【问题描述】:
我尝试使用 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 从 C# 应用程序发送电子邮件,虽然我不记得为什么,但我需要设置“smtp.UseDefaultCredentials = false;”在发送消息之前。
-
你说它不发送。但是你有例外吗?为什么
smtp.Send(message);在自己的代码块中? -
@LianeStevenson 好吧,显然你应该阅读
using声明。 -
@LianeStevenson 将发送命令放在它自己的块中,就像你所拥有的一样,与没有它在块中没有任何不同。新块更改了范围,但由于该块内没有声明任何内容,您应该删除它周围的大括号。由于 smtp.Send() 可以抛出异常,因此将其包装在 try/catch 块中并不是一个坏主意:)
-
@QuestionMarks "smtp.UseDefaultCredentials = false;"工作!如果您将其作为答案弹出,我会将其标记为帮助解决此问题的其他人;)