【发布时间】:2016-10-25 21:19:10
【问题描述】:
我正在使用 C# 使用 SMTP 和 gmail 服务器发送电子邮件。
以下是我用于发送电子邮件的代码。我遇到了一些错误,即
SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 Authentication Required。
public static bool SendEmail(string from, string[] to, string[] cc, string[] bcc, string subject, string body, bool isBodyHtml, List<Attachment> attachmentList)
{
try
{
var mailMessage = new MailMessage();
var smtpClient = new SmtpClient();
mailMessage.From = new MailAddress(from);
mailMessage.To.Add(new MailAddress(string.Join(",", to)));
if (cc != null && cc.Any())
{
mailMessage.CC.Add(new MailAddress(string.Join(",", cc)));
}
if (bcc != null && bcc.Any())
{
mailMessage.Bcc.Add(new MailAddress(string.Join(",", bcc)));
}
mailMessage.Subject = subject;
mailMessage.Body = body;
mailMessage.IsBodyHtml = isBodyHtml;
if (attachmentList != null)
{
foreach (var attachment in attachmentList)
{
mailMessage.Attachments.Add(attachment);
}
}
smtpClient.Host = "smtp.gmail.com";
smtpClient.Port = 587; //465
smtpClient.Credentials = new System.Net.NetworkCredential("username@email.com", "passsword");
smtpClient.EnableSsl = true;
smtpClient.Send(mailMessage);
return true;
}
catch (Exception ex)
{
return false;
}
}
我做错了什么以及如何使用 gmail 发送电子邮件。
【问题讨论】:
-
您是否检查过凭据是否正确?
-
是的,凭据是正确的。
-
如果您提供特定的电子邮件地址和密码
smtpClient.UseDefaultCredentials = false;,请将此行放入您的代码中 -
对我来说,您的代码看起来不错,请尝试检查 Gmail 收件箱,您可能收到有关来自不安全应用或其他任何东西的注册尝试的邮件,如果您收到来自 gmail 的邮件,请按照说明更改设置根据它。
-
发件人地址是否与登录地址相同?否则 gmail 可能会认为您正在尝试转发消息