我正在尝试使用C#应用程序发送带有我网站地址的电子邮件 直到最近,这个工作好几个月。 (也许我的提供者改变了一些事情或其他人改变了设置)
以下是代码:
private void sendEmail(Email invite) {
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient(smtpServerName);
mail.From = new MailAddress(emailUsername);
mail.To.Add(invite.RecipientEmail);
mail.Subject = invite.MessageSubject;
mail.Body = invite.MessageBody;
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);
// SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
}
这是错误:
SMTP服务器需要安全连接,或者客户端未经过身份验证。服务器响应是:需要SMTP身份验证。
查看其他问题,我尝试了他们的建议,制作SmtpServer.EnableSsl = true
。这根本不起作用。它给出了以下内容:
System.Net.Mail.SmtpException:服务器不支持安全连接。
我猜我应该禁用SSL并按原样使用它。
有关如何重新发送电子邮件的建议吗?
修改
我试过没有SmtpServer.UseDefaultCredentials = false;
我试过它设置为true:SmtpServer.UseDefaultCredentials =true;
我已尝试评论该行以及以下//SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);
答案 0 :(得分:8)
我认为你必须设置DeliveryMethod = SmtpDeliveryMethod.Network
这个目前正在我的电脑上工作,我检查过,工作得很好,试试这个
using System.Net;
using System.Net.Mail;
var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@example.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)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
答案 1 :(得分:7)
该错误消息通常由以下之一引起:
答案 2 :(得分:2)
如果您确定自己的用户名和密码是正确的,但仍然出现错误,则表示Gmail已阻止您的应用。
你应该检查'打开' the following link relevant to your gmail account中的单选按钮。它会正常工作。