我開發了一個主要使用SMTP發送電子郵件的應用程序。逐個發送消息很好,但是我期待着加快這個過程。我創建了多個SmtpClient
實例以及消息以避免彼此衝突。由於不同的實例,我假設在多個線程上執行.Send()
會很好。但是,單獨使用我的Thread
代碼的某些內容不起作用,因爲我無法使用此代碼在一個線程上發送一封電子郵件。我只是收到一個模糊的"Failure sending mail"
異常。我將發佈有效的代碼,以及不起作用的Thread
。有人可以分享他們認爲可能的原因嗎?C#使用System.Threading發送SMTP
注意我目前不打算使用新的async
能力,而是利用Thread
工作宣言和方法調用:
var SMTP = new SmtpClient
{
Host = txtBxSenderHost.Text,
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(strSenderAddress, strSenderPassword)
};
using (var message = new MailMessage(senderAdrress, toAddress)
{
Subject = strSubject,
Body = strBody
})
{
SMTP.Send(message);
}
不工作主題的聲明和方法調用:
var SMTP = new SmtpClient
{
Host = txtBxSenderHost.Text,
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(strSenderAddress, strSenderPassword)
};
using (var message = new MailMessage(senderAdrress, toAddress)
{
Subject = strSubject,
Body = strBody
})
{
Thread T1 = new Thread(delegate() { SMTP.Send(message); });
T1.Start();
}
你有'新Thread'了'using'塊內'message'?這樣,消息可能會在新線程發送之前處理。 –
用另一種方法包裝你的工作聲明和工作方法,然後在線程中使用該方法 – nsconnector
我沒有。你能再詳細一點嗎?我也不確定你在新線程發送之前被處置的意思,爲了測試,我只使用了一個線程。我也可以離開這裏,我希望你能和我一起生活。 – scniro