Архитектура электронной почты приложения - PullRequest
2 голосов
/ 20 февраля 2010

Я унаследовал веб-сайт ASP.NET, написанный на c #, используя базу данных mssql 2k8, которая отправляет электронные письма на основе вставки в таблицу сообщений через триггер с использованием почты базы данных: | Один из любых сбоев и откат слишком многих вещей не зарегистрированы, и электронное письмо не отправлено ...

Какой беспорядок. В прошлом я написал несколько почтовых подсистем, и я подумал, что буду просить ввода, прежде чем начинать переписывать здесь. Каковы лучшие практики для организации очереди / отправки электронной почты в среде Microsoft? Должен ли я отправлять электронные письма в очередь, оттуда извлекать, отправлять, регистрировать? БД электронной почты выглядит как сбой. Управляется ли очередь на сервере SQL? SQL Server вызывает приложение C #? Если отправка электронной почты не удалась, какой подход лучше использовать для восстановления?

Спасибо за понимание!

Ответы [ 3 ]

2 голосов
/ 22 февраля 2010

Я думаю, что вы правы, чтобы полностью отделить использование системных функций: используйте SQL для данных и отправьте электронную почту совершенно другому «поставщику услуг»; Я предполагаю, что у вас есть какой-то уровень бизнес-логики, который будет управлять этим?

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

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

0 голосов
/ 20 февраля 2010

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

Возможно, вы используете старую устаревшую xp_sendmail систему на основе?

0 голосов
/ 20 февраля 2010

Вы можете отправлять почту через sql-сервер. Для более подробной информации это

Архитектура этого здесь

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

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