发送电子邮件 C# 时出错
本文关键字:出错 电子邮件 | 更新日期: 2023-09-27 17:56:37
我尝试用C#发送电子邮件(使用gmail)。我检查了我可以在谷歌上找到的解决方案,但它对我不起作用,我总是有错误:
SMTP 服务器需要安全连接或客户端不是 认证。来自服务器的响应是:5.5.1 身份验证 必填。
这是代码的检查:
string smtpAddress = "smtp.gmail.com";
int portNumber = 587;
bool enableSSL = true;
string emailFrom = "*****@gmail.com";
string password = "*****";
string emailTo = "******@gmail.com";
string subject = "Hello";
string body = "Hello, I'm just writing this to say Hi!";
using (MailMessage mail = new MailMessage())
{
mail.From = new MailAddress(emailFrom);
mail.To.Add(emailTo);
mail.Subject = subject;
mail.Body = body;
mail.IsBodyHtml = true;
using (SmtpClient smtp = new SmtpClient(smtpAddress, portNumber))
{
smtp.Credentials = new NetworkCredential(emailFrom, password);
smtp.EnableSsl = enableSSL;
smtp.Send(mail);
}
}
MSDN说:某些SMTP服务器要求客户端 在服务器代表它发送电子邮件之前进行身份验证。设置此项 属性为 true 时,如果此 SmtpClient 对象应由 服务器,使用 当前登录的用户。对于客户端应用程序,这是所需的 在大多数情况下的行为。
所以你需要在分配Credentials
之前设置smtp.UseDefaultCredentials = false;
,所以你的代码会看起来像下面这样:
using (SmtpClient smtp = new SmtpClient(smtpAddress, portNumber))
{
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential(emailFrom, password);
smtp.EnableSsl = enableSSL;
smtp.Send(mail);
}
我找到了适合我的解决方案。倒霉提出的解决方案很好,但我需要配置gmail帐户。
所以代码是:
string smtpAddress = "smtp.gmail.com";
int portNumber = 587;
bool enableSSL = true;
string emailFrom = "****@gmail.com";
string password = "*****";
string emailTo = "****@gmail.com";
string subject = "Hello";
string body = "Hello, I'm just writing this to say Hi!";
using (MailMessage mail = new MailMessage())
{
mail.From = new MailAddress(emailFrom);
mail.To.Add(emailTo);
mail.Subject = subject;
mail.Body = body;
using (SmtpClient smtp = new SmtpClient(smtpAddress, portNumber))
{
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential(emailFrom, password);
smtp.EnableSsl = enableSSL;
smtp.Send(mail);
}
}
此外,在您的Gmail帐户中,您必须进行此更改。
Gmail 帐户更改