繁体   English   中英

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

[英]eMail from asp.net c# program very slow

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

早些时候,我从Samir Adel那里收到了一个答案(并在我不记得谁的其他人的评论中得到确认)以使用多个线程。 不幸的是,由于某些原因,此答案已删除。 我对线程主题不熟悉。 我在安德鲁·特罗尔森(Andrew Troelsen)的Pro C#2008和.NET 3.5 Platform书中查找了该主题。 我想出了以下代码:

Thread backgroundThread = new Thread(new ThreadStart(EMailPrepareAndSend));
backgroundThread.Name = "Secondary";
backgroundThread.Start();

其中EMailPrepareAndSend是准备电子邮件消息的方法,从中调用我的问题中所示的EMail类中的SendEmail()方法。 这使程序可以立即继续运行,即使电子邮件尚未完成发送也是如此。 谢谢萨米尔·阿德尔(Samir Adel),他的回答使我朝着正确的方向前进。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM