C#:尝试发送电子邮件时抛出SmtpException

时间:2014-05-07 15:24:04

标签: c# exception smtp gmail

运行时,以下代码抛出此异常: "其他信息:SMTP服务器需要安全连接或客户端未经过身份验证。服务器响应为:5.5.1需要身份验证。 "

        public static void VerzendMail(Mail opgesteldeMail)
    {
        MailMessage mail = new MailMessage();
        SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
        mail.From = new MailAddress(opgesteldeMail.Verzender);
        mail.To.Add(opgesteldeMail.Ontvanger.Email);
        mail.Subject = opgesteldeMail.Onderwerp;
        mail.Body = opgesteldeMail.Data;

        SmtpServer.Port = 587;
        SmtpServer.Credentials = new NetworkCredential("myEmailAddress", "myPass");
        SmtpServer.EnableSsl = true;
        SmtpServer.UseDefaultCredentials = false;

        SmtpServer.Send(mail);
    }

(myEmailAddress& myPass不在代码变量中,我只是不会让帐户离开)

我已经搜索了一段时间,因为似乎很多人都可以得到这个错误,但在所有情况下它都很容易解决(比如添加凭据或内容)但是这并不是在我的代码中似乎就是这种情况。

奇怪的是,这就是为什么我只是没有得到它,2个月前它工作了......我们能够发送有关已经生成的新密码等的电子邮件。在过去的两个月里我没有看过这段代码,所以idk,也许有人删掉了1行,我只是无法找出哪一行?

在调试代码时,我已经检查了所有变量,并且它们填满了正确的值等等。

我们还尝试制作一个新的虚拟帐户进行测试,将其放入myEmailAddress& myPass,它也不会起作用:。

我知道很多人会问&我之前已经问过这个问题,但我似乎无法找到它并且它让我超越了可信的措施...

感谢您对此进行调查!

JEP。

1 个答案:

答案 0 :(得分:0)

尝试修改这段代码:

SmtpServer.Credentials = new NetworkCredential("myEmailAddress", "myPass");
SmtpServer.EnableSsl = true;
SmtpServer.UseDefaultCredentials = false;

到此:

SmtpServer.UseDefaultCredentials = false;
SmtpServer.Credentials = new NetworkCredential("myEmailAddress", "myPass");
SmtpServer.EnableSsl = true;

换句话说,请尝试在设置要使用的凭据之前禁用UseDefaultCredentials

设置属性的顺序可能会有所不同。

我很确定我已经看到过类似的问题并重新排序。不过,我可能会记错了。