簡體   English   中英

無法使用SmtpClient發送郵件

[英]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.

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