さまざまな人にさまざまな電子メールを送信する必要があります。受信者ごとに異なる電子メールの本文が生成され、次のメソッドを呼び出します。つまり、10 人の受信者がいる場合、次のメソッドが 10 回呼び出されます。
public int Send_Mail(string send_from_bc, string send_to_bc, string subject_bc, string body_bc)
{
try
{
int count_returned = 0;
var send_from = new MailAddress(send_from_bc, "The Admin");
var send_to = new MailAddress(send_to_bc);
string subject = subject_bc;
string body = body_bc;
var smtp = new SmtpClient
{
Host = "**my smtp host**",
Port = 25,
DeliveryMethod = SmtpDeliveryMethod.Network,
Timeout = 300000
};
using (var message = new MailMessage(send_from, send_to)
{
Subject = subject,
Body = body
})
{
message.IsBodyHtml = true;
smtp.Send(message);
count_returned += 1;
}
return count_returned;
}
catch (Exception ex)
{
throw new Exception("Exception caught in Send_Mail", ex);
}
}
問題は、少数のメール (10 通または 15 通のメールなど) を送信するだけでも、信じられないほどの時間がかかることです。1通のメール送信にかかる時間は2~5分程度です。現在、提供された SMTP ホストの一部に問題があると確信しています。しかし、物事をスピードアップするにはどうすればよいでしょうか?
また、これを達成する方法はありますか: 現在、ユーザーはボタンをクリックしてから、2 つのメールを送信するために、制御が返されて値が返されるまでに 2 ~ 5 分 (場合によってはそれ以上) 待つ必要があります。のラベルが「送信済みメール」に変更されます。ユーザーがボタンをクリックするだけで電子メールの送信が開始され、ウィンドウを閉じて作業を続行できるようにすることはできますか?
私は今、重要な段階で立ち往生しています。助けていただければ幸いです。