我需要向不同的人发送不同的电子邮件。为每个收件人生成不同的电子邮件正文,然后我调用以下方法。也就是说,如果有 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 封邮件)也需要花费大量时间。发送一封邮件大约需要 2-5 分钟。现在,我确实相信部分提供给我的 SMTP 主机有问题。但是我能做些什么来加快速度呢?
另外,有没有办法实现这一点:现在,用户点击一个按钮,然后说,为了发送两封邮件,他/她必须等待 2-5 分钟(有时甚至更长时间)才能返回控制权和值的标签更改为“已发送电子邮件。”。是否可以做一些事情,使用户只需单击按钮,并启动电子邮件发送,他/她可以关闭窗口并继续他的工作?
我现在处于关键阶段,我们将不胜感激。