Как отправить электронную почту в фоновом режиме в AsP.NET? - PullRequest
2 голосов
/ 19 мая 2010

Я использую веб-формы ASP.NET,

Когда пользователь отправляет страницу, электронное письмо будет отправлено многим людям, что замедляет обратную передачу,

Каков наилучший способ отправки писем без замедления перезагрузки страницы?

спасибо

Ответы [ 2 ]

7 голосов
/ 19 мая 2010

Вы можете использовать класс System.Net.Mail.SmtpClient для отправки электронной почты с использованием метода SendAsync () .

var smtpClient = new SmtpClient();
var message = new MailMessage(fromAddress, toAddress, subject, body);
smtpClient.SendCompleted += new SendCompletedEventHandler(OnSendCompletedCallback);
smtpClient.SendAsync(message, null); // Null Or pass a user token to be send when the send is complete

Если после обработки асинхронной отправки вам потребуется обработать некоторые дополнительные действия, вы также можете подписаться на SendCompleted событие SmtpClient.

private void OnSendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
     // Handle the callback if you need to do anything after the email is sent.
}

Здесь - ссылка на документацию по MSDN.

2 голосов
/ 19 мая 2010

Я обнаружил, что если вы не создаете очень маленький веб-сайт, почти всегда лучше отправлять почту из отдельной службы Windows.

Ваш веб-интерфейс регистрирует почту, которая будет отправлена ​​в вашу базу данных, например. Это имеет приятный побочный эффект: вы также можете разработать отправленную папку , исходящие и т. Д. Ваша служба Windows опрашивает почтовую таблицу и выполняет фактическую отправку.

Отправка почты может вызывать множество исключений, может быть медленной, может истечь время ожидания, запущены процессы хоста и т. Д. Обработка в фоновом режиме имеет большой смысл во многих ситуациях.

Подробнее о Службах Windows .

...