Электронная почта от программы asp.net c # очень медленная - PullRequest
2 голосов
/ 31 июля 2011

Я отправляю простое электронное сообщение с веб-страницы 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, но это не помогло. Я не совсем уверен, как правильно его использовать. Большое спасибо.

1 Ответ

0 голосов
/ 01 августа 2011

Ранее я получил ответ от Самира Аделя (и подтвердил в комментарии кого-то еще, я не помню, кто) использовать несколько потоков. Почему-то, к сожалению, этот ответ удалили. Я не был знаком с темой потоков. Я посмотрел эту тему в книге Pro C # 2008 и платформы .NET 3.5 Эндрю Троелсена. Я придумал следующий код:

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

Где EMailPrepareAndSend - это метод, для которого готовится сообщение электронной почты и из которого вызывается метод SendEmail () в классе EMail, показанный в моем вопросе. Это позволило программе продолжить работу немедленно, даже если электронное письмо не было отправлено. Спасибо Самиру Аделю, его ответ направил меня в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...