C # Отправка SMTP электронной почты для многих людей с пользовательским контентом на почту человека - передовая практика? - PullRequest
1 голос
/ 05 мая 2011

Веб-сайт, который я написал в ASP.NET MVC, позволяет людям подписываться на регулярную рассылку информации по электронной почте.

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

  1. Я предполагаю, что мне нужна отдельная программа из моего приложения для контента MVC.Так что отдельная программа может запускаться из запланированной задачи Windows?

  2. Это отдельное запланированное приложение будет затем циклически формировать электронные письма, которые будут отправлены в установленный день недели?

  3. Поскольку оно не идентичнодля каждого человека, я предполагаю, что мне придется зацикливаться на каждом человеке, заполняя соответствующую информацию.Я хочу убедиться, что я не делаю это неэффективно и в конечном итоге ставлю под угрозу SMTP-сервер моего рабочего места.
    Я продолжаю видеть упомянутое упоминание «папки раскладки», это путь?

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

Это код, который я использую до сих пор, я не уверен, как бы я поместил это в папку раскладки, если это то, что мне нужно:

internal static bool SendEmail(MailAddress fromAddress, MailAddress toAddress, string subject, string body)
    {
        try
        {
            using (var client = new SmtpClient("smtp.server.gov.uk"))
            {
                client.Send(new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body });
            }
            return true;
        }
        catch (SmtpException ex)
        {
            throw new ApplicationException
              ("SmtpException has occured: " + ex.Message);
        }
        catch (Exception)
        {
            return false;
            //throw;
        }

    }

Ответы [ 2 ]

0 голосов
/ 16 февраля 2012

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

http://www.nuget.org/packages/MvcMailer

или просто

Install-Package MvcMailer

с консоли диспетчера пакетов.

0 голосов
/ 05 мая 2011

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

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

Взгляните на эту статью, где подход подробно объясняется: http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

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