2
我想通過smtp.gmail.com在我的C#應用程序中發送電子郵件。 我的代碼一直運行良好,直到上週,我突然收到一條錯誤消息。 我允許我的Gmail賬戶中安全性較低的應用程序,啓用IMAP,沒有任何更改。使用gmail通過C#發送電子郵件
第一次驗證工作正常,我得到「端口打開」。
下面是代碼:
using (TcpClient tcpClient = new TcpClient())
{
try
{
tcpClient.Connect("smtp.gmail.com", 587);
MessageBox.Show("Port open");
}
catch (Exception)
{
MessageBox.Show("Port closed");
}
}
SmtpClient smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
UseDefaultCredentials = false,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new System.Net.NetworkCredential("[email protected]", "mypassword")
};
using (var message = new MailMessage("[email protected]", "[email protected]")
{
Subject = "Test",
Body = "Hi"
})
{
smtp.Send(message);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
我得到的錯誤:
「服務不可用,關閉傳輸通道
服務器響應爲:無法連接到SMTP服務器2A00:1450 :400C:C01 :: 6C(2A00:1450:400C:C01 :: 6C:587),連接錯誤10061" }
感謝您的幫助
嘗試在另一個gmail帳戶上檢查您的代碼,gmail可能會對您的smtp活動做出反應並限制連接 – Vladimir
有時,10061錯誤是由本地計算機或網絡連接上的防火牆或防病毒引起的。 我有一個學校網絡問題,無法發送電子郵件,但在家裏我可以。 –
你與TcpClient的第一次連接是非常無用的,你爲什麼不放棄它?我不知道來自同一個IP的多個活動連接的Google策略。假設您的TcpClient連接沒有失敗,那麼您應該檢查您的應用程序是否包含在GMail的_Less安全應用程序列表中。同時檢查本地問題,本地/域網絡策略可能會阻止您的連接。 –