タスクが必要ありません。 SendAsyncは非同期で、別のスレッド自体を使用します。タスクはあなたの郵送を加速しません。
更新: 私は同じ問題を解決するときに私はタスクと同期送信を使用します。 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!ありがとう、参考になりました、これは素晴らしいです、それはasyncronously 100%を送信する、私は人々がMVCMailerは疑似非同期の笑だったと言うことを聞いた。ありがとう! – Baconbeastnz
問題ありません!私はこの1つで少しのために机の上に私の頭を叩いていた:) – Matt
@マット、それは素晴らしい作品!ありがとうございます!!! =) –