我有一個下面的方法,我呼籲每個MAILMESSAGE:SmtpClient:併發連接的最大數目已超過極限
public static string SendEmail(MailMessage email)
{
string rez = "";
try
{
var smtpserver = "10.xxx.xx.xx";
using (SmtpClient mailclient = new SmtpClient())
{
mailclient.Host = smtpserver;
mailclient.Send(email);
}
rez = "OK";
}
catch (Exception ex)
{
rez = "NOT OK: " + ex.Message;
}
return rez;
}
我送32個電子郵件-s的一次,其中兩個我mailclient.Send()發生以下錯誤: NOT OK:服務不可用,關閉傳輸通道。服務器響應爲:4.3.2併發連接的最大數目已超過極限,關閉傳輸通道
我想知道,這是因爲我創建了一個新的SmtpClient實例每個郵件?
由於只有一個SmtpClient實例,下面的修改會解決問題嗎?不幸的是,我無法測試它,我只能在生產中試用它。
public static SmtpClient mailclient = new SmtpClient("10.xxx.xx.xx");
public static string SendEmail(MailMessage email)
{
string rez = "";
try
{
mailclient.Send(email);
rez = "OK";
}
catch (Exception ex)
{
rez = "NOT OK: " + ex.Message;
}
return rez;
}
謝謝。
*我無法測試它,我只能嘗試在生產。*你註定即可。抱歉。 –
嘗試引入每個電話之間的輕微_delay_,說100毫秒(只是一個例子),看看它是否改變了一些東西。 – Tigran
照常發送'()' - 方法塊,直到該消息被髮送(或發送失敗的),所以應該有發送消息32連續沒有問題。你使用線程來執行你的'SendEmail()'方法嗎? – Jehof