Сохранение данных в базе данных SQL Server и последующая отправка электронного письма - PullRequest
1 голос
/ 29 сентября 2010

У меня есть форма ввода и редактирования данных, и при каждом событии ввода или обновления данных я должен отправлять электронную почту динамическому списку получателей.Я отправляю электронное письмо, как только пользователь нажимает кнопки «Сохранить» или «Редактировать», но думаю сначала сохранить данные в базе данных, а затем отправить письмо позже.Я хочу сделать это частично, чтобы улучшить время отклика приложения, поскольку отправка электронной почты, как правило, занимает больше времени, чем хотелось бы.реализации чего-то подобного или кто-то знает хороший учебник по таким вопросам.

Тело письма отформатировано в формате html.

Ответы [ 3 ]

2 голосов
/ 29 сентября 2010

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

1 голос
/ 29 сентября 2010

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

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

Вы также можете сделать это непосредственно в базе данных, используя триггер базы данных или запланированное задание.в базе данных.Последние версии SQL Server поддерживают запуск хранимых процедур, написанных на C # или Vb.Net, так что вы, вероятно, можете использовать большую часть существующего кода здесь.

Наконец, вы можете перейти к простому решению, при котором вы отправляете электронную почту наотдельный поток в вашем приложении asp.net.Таким образом вы избавляетесь от необходимости использовать приложение-службу и можете использовать свой код более или менее так, как он есть сегодня.

0 голосов
/ 29 сентября 2010

Один из способов сделать это - записать в базу данных, а затем поместить в очередь сообщение, которое сообщает службе электронной почты (записанной как служба Windows), что есть сообщения для отправки. Затем служба электронной почты обращается к базе данных, чтобы выяснить, что ей действительно нужно делать. Это отделяет службу электронной почты от веб-приложения, а также позволяет избежать опроса.

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

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