你不需要任務。 SendAsync是異步的並使用另一個線程自我。任務不會加速你郵寄。
UPDATE: 當我解決同樣的問題,我使用任務和同步發送。似乎SendAsync並非如此異常。這是我的代碼示例(這是不希望的HttpContext):
public void SendMailCollection(IEnumerable<Tuple<string, string, MailAddress>> mailParams)
{
var smtpClient = new SmtpClient
{
Credentials = new NetworkCredential(_configurationService.SmtpUser, _configurationService.SmtpPassword),
Host = _configurationService.SmtpHost,
Port = _configurationService.SmtpPort.Value
};
var task = new Task(() =>
{
foreach (MailMessage message in mailParams.Select(FormMessage))
{
smtpClient.Send(message);
}
});
task.Start();
}
private MailMessage FormMessage(Tuple<string, string, MailAddress> firstMail)
{
var message = new MailMessage
{
From = new MailAddress(_configurationService.SmtpSenderEmail, _configurationService.SmtpSenderName),
Subject = firstMail.Item1,
Body = firstMail.Item2
};
message.To.Add(firstMail.Item3);
return message;
}
Hey Matt!感謝您的參考,這看起來不錯,它是否異步發送100%,我聽說有人說MVCMailer是僞異步哈哈。謝了哥們! – Baconbeastnz
沒有問題!我在這張桌子上撞了一下桌子:) – Matt
@ Matt,它很棒!謝謝!!! =) –