Skip to main content
 首页 » 编程设计

c#之来自 asp.net c# 程序的电子邮件非常慢

2024年01月11日31cmt

我正在从 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 平台一书中查找了这个主题。我想出了以下代码:

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

其中 EMailPrepareAndSend 是准备电子邮件的方法,并从中调用 EMail 类中的 SendEmail() 方法,如我的问题所示。这使程序能够立即继续,即使电子邮件尚未发送完毕。感谢 Samir Adel,他的回答让我朝着正确的方向前进。