Лучшая практика для отправки массовой электронной почты в приложении (ASP.NET MVC 2, C #)? - PullRequest
0 голосов
/ 19 мая 2010

Каков наилучший способ реализовать функцию массовой отправки электронной почты в веб-приложении? Два основных случая:

  1. Электронные сообщения отдельным зарегистрированным пользователям в зависимости от их действий (просто отправка коротких напоминаний пользователю о новых сообщениях в созданной им теме)

  2. Функциональность «Отправить письмо всем зарегистрированным пользователям», было бы неплохо, чтобы системный администратор отправлял некоторые сообщения всем зарегистрированным пользователям. Конечно, мы не можем добавлять все электронные письма получателю, потому что адреса электронной почты для каждого пользователя анонимны.

Как я понимаю, для случая nr1 нет проблемы, просто создайте какое-либо электронное сообщение через System.Net.Mail, создав новое почтовое сообщение и отправив его ... но как насчет случая nr 2 ???

Я думаю, что-то вроде этого:

foreach(var emailAddress in emailAddresses) { 

MailMessage mail = new MailMessage();

mail.From = new MailAddress("jondoe@bla.net");

mail.To.Add(emailAddress);

mail.Subject = "test";

mail.Body = "test";

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);

smtp.Send(mail); 
}

не очень хороший путь :), поэтому вопрос в том, как лучше всего этого добиться?

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

Ответы [ 3 ]

1 голос
/ 19 мая 2010

Еще одна вещь: не используйте Gmail. Во-первых, у gmail есть ограничения - во всяком случае, вообще не используйте внешний сервер.

Я делаю что-то в этом роде, и я использую директорию перетаскивания на жестком диске, затем использую MTA (SMTP-сервис в Windows), чтобы выполнить фактическую передачу.

Таким образом, я быстро заканчиваю (только генерация файлов), тогда как реальная электронная почта может занять больше времени.

1 голос
/ 19 мая 2010

Если вы хотите скрыть, к кому это приведет в случае 2, почему вы не можете поместить получателей в BCC MailMessage?

Одна вещь, которую я бы порекомендовал, это определить настройки электронной почты в вашем файле web.config, как показано ниже:

<configuration>
  <!-- Add the email settings to the <system.net> element -->
  <system.net>
    <mailSettings>
      <smtp>
        <network 
             host="relayServerHostname" 
             port="portNumber"
             userName="username"
             password="password" />
      </smtp>
    </mailSettings>
  </system.net>

  <system.web>
    ...
  </system.web>
</configuration>
0 голосов
/ 25 сентября 2010

Если вы получили слишком много электронной почты в экземпляре "emailAddresses", вы столкнулись бы с проблемой истечения времени ожидания. Вы могли бы рассмотреть крошечное приложение Windows Service для обработки функции отправки. У меня это работает.

...