![](/img/trans.png)
[英]ASP.NET Send email from VStudio is running fast but very slow in IIS
[英]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.