使用 C# 发送邮件
本文关键字:使用 | 更新日期: 2023-09-27 18:31:43
尽管在Stackoverflow上都有关于这个的主题。我无法找到这个问题的解决方案:
我有这个例外:
SMTP 服务器需要安全连接或客户端不需要 认证。来自服务器的回复是: 5.5.1 身份验证 必填。欲了解更多信息,请访问
使用此代码:
var fromAddress = new MailAddress(user.Email, "From Name");
var toAddress = new MailAddress("myadress@gmail.com", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
请问我错过了什么?感谢您的帮助
你没有错过任何东西。我怀疑你的密码弄错了。您没有忘记将其从"fromPassword"更改为真正应该是什么吗?
这是同一任务的更简洁的实现
您输入的密码不正确,或者(更有可能)您在启用 Google 的两步身份验证后尝试使用普通密码
您需要生成和使用应用程序特定的密码
这段代码对我有用
SmtpClient sc = new SmtpClient("smtp.gmail.com");
NetworkCredential nc = new NetworkCredential("username","password");
//username doesn't include @gmail.com
sc.UseDefaultCredentials = false;
sc.Credentials = nc;
sc.EnableSsl = true;
sc.Port = 587;
try
{
sc.Send(mm);
}
catch (Exception ex)
{
EventLog.WriteEntry("Error Sending", EventLogEntryType.Error);
}