2010-10-28 1 views
3

Мы разрабатываем webapp, который должен отправлять электронные письма, написанные на Java/Groovy. В настоящее время мы сохраняем каждое письмо в базе данных до того, как мы позвоним API-интерфейсам Java Mail, чтобы отправить почту на наш SMTP-сервер.Инструмент для отправки электронной почты из базы данных

Я хочу отправить электронную почту асинхронно. Я хочу сохранить электронную почту, а затем еще один процесс забрать письмо и отправить его (и отправить его только один раз). В идеале этот процесс выполняется за пределами моего webapp.

Есть ли инструменты, которые это делают?

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

+0

Является ли электронное письмо в базе данных полным или его нужно объединить с шаблоном? –

+0

Его полный. Мы выполнили всю предварительную обработку. (На данный момент это единственное текстовое письмо) – Tihom

+0

вы используете grails? или просто отличный? –

ответ

4

Предложения по использованию хрон читать базу данных вполне работоспособным.

Другим хорошим подходом здесь является использование очереди сообщений службы сообщений Java (JMS). Они постоянны (подкреплены базой данных) и надежны. У вас может быть одна или несколько программ-продюсеров, в которые помещаются сообщения с соответствующими данными, а затем один или несколько потребителей обрабатывают сообщения и деактивируют их. Все это настроено на очень высокую надежность, и вы получаете гибкость асинхронного развязывания операций, а это означает, что при появлении сообщений по электронной почте очередь сообщений может увеличиться до тех пор, пока потребители не догонят всплеск. Еще одно преимущество заключается в том, что электронная почта выходит, как только потребитель получает к ней, а не по таймеру. Кроме того, если вам требуется высокая доступность, у вас может быть несколько потребителей в случае, если один снижается.

Проверьте Apache's ActiveMQ за хорошую реализацию JMS с открытым кодом.

1

Если вы используете Linux/Unix, вы можете создать задание cron, которое будет запускаться каждые несколько минут, что вызовет программу для захвата электронной почты из базы данных и отправки ее. Вы также можете иметь поле в базе данных, чтобы указать, было ли отправлено сообщение. Недостатком этого подхода является то, что может произойти отсрочка на несколько минут после того, как ваш webapp сохранит электронную почту и когда будет запущено задание cron.

0

Установите задание cron и используйте скрипты, чтобы запросить db и отправить электронные письма через sendmail.

0

В случае случайности это Oracle DB, вы можете использовать пакет UTL_MAIL для записи PL/SQL для отправки почты через ваш SMTP-сервер. Затем создайте запланированное задание для выполнения по вашему желаемому графику.

http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/u_mail.htm

0

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

http://gaq.sourceforge.net/

0

Вы можете использовать кварц, библиотеку планирования (по аналогии с хронами), чтобы запланировать повторяющуюся задачу, читает БД и отправляет электронные письма. Если вы используете Grails, есть плагин Quartz, который позволяет работать с Quartz немного больше Groovy.

 Смежные вопросы

  • Нет связанных вопросов^_^