[英]Can't send mail using SmtpClient
我想使用SmtpClient類發送郵件,但它不起作用。 碼:
SmtpClient smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new System.Net.NetworkCredential(obMailSetting.UserName, obMailSetting.Password);
smtpClient.Host = obMailSetting.HostMail;
smtpClient.Port = obMailSetting.Port;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = obMailSetting.Connect_Security;//true
//smtpClient.UseDefaultCredentials = true;//It would work if i uncomment this line
smtpClient.Send(email);
它引發了一個異常:
SMTP服務器需要安全連接或客戶端未經過身份驗證。 服務器響應為:5.7.1客戶端未經過身份驗證
我確定用戶名和密碼是正確的。 我的代碼有問題嗎? 謝謝。
你可以試試這個:
MailMessage mail = new MailMessage();
mail.Subject = "Your Subject";
mail.From = new MailAddress("senderMailAddress");
mail.To.Add("ReceiverMailAddress");
mail.Body = "Hello! your mail content goes here...";
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.EnableSsl = true;
NetworkCredential netCre =
new NetworkCredential("SenderMailAddress","SenderPassword" );
smtp.Credentials = netCre;
try
{
smtp.Send(mail);
}
catch (Exception ex)
{
// Handle exception here
}
你可以試試這個出:
在Exchange管理控制台的“服務器配置”節點下,選擇“集線器傳輸”和服務器的名稱。 在“接收連接器”窗格中,打開任一個Recive連接器(我的默認安裝創建2),或者您可以為TFS創建一個新連接器(我也試過這個並且它有效)。 對於任何這些連接器,請打開“屬性”,然后在“權限組”選項卡上確保選中“匿名用戶”(默認情況下不是這樣)。
要么
您也可以通過初始化SmtpClient
來嘗試這個 ,如下所示:
SmtpClient smtp = new SmtpClient("127.0.0.1");
服務器響應5.7.1客戶端未經過身份驗證,但UseDefaultCredentials
是您未將UseDefaultCredentials
設置為true
。 這表明您使用的NetworkCredential
實際上是錯誤的。
用戶名或密碼是錯誤的還是您需要指定域? 您可以使用另一個構造函數來指定域:
new NetworkCredential("MyUserName", "MyPassword", "MyDomain");
或者,您指定的用戶可能沒有在SMTP服務器上發送郵件的必要權限,但我希望其他服務器響應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.