我正在从asp.net网页向两位收件人发送简单的电子邮件。完成执行大约需要15秒。有可能加快这个速度吗?这是代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
namespace NihulKriotNS.BLL
{
public class EMailClass
{
//fields
private const string strFrom = "myEmail";
private const string mailServer = "myServer";
private const string userName = "myUserName";
private const string usePass = "myPassword";
//ctors
public EMailClass()
{
}
public void SendEMail(List<string> emailList, string strSubject, string strMessage, bool isHTML)
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress(strFrom);
if (emailList != null && emailList.Count > 0 )
foreach (string em in emailList)
{
msg.To.Add(em);
}
else
return;
msg.Subject = strSubject;
msg.Body = strMessage;
msg.IsBodyHtml = isHTML;
SmtpClient smtp = new SmtpClient(mailServer);
smtp.Credentials = new System.Net.NetworkCredential(userName, usePass);
smtp.Send(msg);
msg.Dispose();
}
}
}
我尝试使用smpt.SendAsync但根本没用。我不确定如何正确使用它。 非常感谢你。
答案 0 :(得分:0)
早些时候,我收到Samir Adel的回答(并在其他人的评论中证实,我不记得是谁)使用多个线程。出于某种原因,不幸的是,这个答案已被删除。我不熟悉线程的主题。我在Andrew Troelsen的Pro C#2008和.NET 3.5平台上查阅了这个主题。我想出了以下代码:
Thread backgroundThread = new Thread(new ThreadStart(EMailPrepareAndSend));
backgroundThread.Name = "Secondary";
backgroundThread.Start();
其中EMailPrepareAndSend是一种准备电子邮件消息的方法,并且从我的问题中显示的EMail类中的SendEmail()方法被调用。这使得程序能够立即继续,即使电子邮件尚未完成发送。感谢Samir Adel,他的回答让我朝着正确的方向前进。