Отправка электронных писем - Использование БД или веб-приложения - PullRequest
0 голосов
/ 23 апреля 2009

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

В ходе расследования я могу извлечь всю необходимую мне информацию из базы данных, создать электронное письмо с вложениями и отправить их, используя встроенные почтовые функции базы данных (Oracle и SQL Server).

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

Поскольку мне не нужно какое-либо необычное форматирование электронной почты, какой лучший способ сделать это? Кажется, нет никакой разницы с точки зрения достижения моей цели; единственное преимущество использования БД состоит в том, что я могу настроить отправку электронной почты по триггеру обновляемой строки.

Ответы [ 4 ]

5 голосов
/ 23 апреля 2009

Я бы сделал это в коде приложения. Оставьте хранилище данных в базе данных и оставьте логику приложения приложению.

2 голосов
/ 23 апреля 2009

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

1 голос
/ 23 апреля 2009

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

У нас есть система отчетов об инцидентах, которая отправляет электронное письмо при вводе инцидента. Не понимая объема электронных писем, мы бы изначально отправляли его по 100 штук за раз (ограничения SMTP) и просматривали группы, если их было больше, - после некоторых продаж мы обнаружили, что отправлялось свыше нескольких тысяч на каждую запись, и их отправка может занять почти минуту - создание почтового потока не очень подходило для этого, поэтому мы создали очередь почты и каждые 5 минут выполняли цикл обработки и отправляли все, что не было отправлено. - ошибка - если очередь задержалась или если в очереди было так много электронных писем, что ее запуск занимал более 5 минут, то это началось бы снова, и некоторые сообщения были отправлены 2, 3 4, даже 10 раз - возможно, был плохой дизайн, но что бы то ни было

В конце концов, мы только что переместили все это на почтовую очередь SQL Server, и она работала как первоочередная задача - настоящий урок (на мой взгляд,) заключается в том, чтобы выполнять всю обработку, как вам нужно, в вашей программе, но как только вы знаете, электронные письма должны быть отправлены и кому они передаются тому, что специально обрабатывает отправку электронной почты (CDO, почта Sql Server, Oracle и т. д.)

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

1 голос
/ 23 апреля 2009

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

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

...