簡體   English   中英

C#:嘗試發送電子郵件時拋出SmtpException

[英]C# : SmtpException thrown when trying to send an email

運行時,以下代碼將引發此異常:“其他信息: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不在代碼變量中,我只是不會放棄該帳戶)

我已經搜索了一段時間,因為似乎很多人都可以得到此錯誤,但是在所有情況下都可以輕松解決(例如添加憑據或內容),但是在我的代碼中情況並非如此。

奇怪的是,這就是為什么我不明白它的原因,兩個月前它起作用了……我們能夠發送有關已生成的新密碼的電子郵件。 在過去的兩個月中,我沒有看過這段代碼,所以idk,也許有人刪除了1行,但我不知道是哪一行?

在調試代碼時,我檢查了所有變量,並使用正確的值等將它們填滿。

我們還嘗試創建一個新的虛擬帳戶進行測試,將其放入myEmailAddress和myPass中,但它也不能正常工作。

我知道很多人之前都曾問過這個問題,但我似乎找不到它,這使我感到難以置信。

感謝您查看這個!

嘗試修改這段代碼:

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。

屬性設置的順序可能會有所不同。

我很確定我已經看到了類似的問題,並且重新排序了。 不過,我可能記錯了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM