电子邮件从asp.net c#程序非常慢

本文关键字:程序 非常 net asp 电子邮件 | 更新日期: 2023-09-27 18:03:59

我正在从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,但没有帮助。我不太确定如何正确使用它。非常感谢。

电子邮件从asp.net c#程序非常慢

早些时候,我收到了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,他的回答让我找到了正确的方向。