Сценарий:
1) Моим приложением является.NET, 3.5 веб-приложениями C# и базой данных является SQL 2008.
2) Электронные письма будут в регионе 100 - 1 000 в день и инициированы различными взаимодействиями интернет-пользователя с приложением.
3) Большинство электронных писем будет содержать вложение (вложения) между 50 КБ и 5 МБ. Некоторыми электронными письмами будет HTML, и некоторые будут простым текстом.
4) Все вложения будут получены из каталога на веб-сервере.
5) SQL-сервер является отдельной машиной к веб-серверу. Все соединения SQL из приложения являются через логины SQL не аутентификацией Windows.
6) Для масштабируемого решения электронные письма, которые будут отправлены, будут поставлены в очередь в таблице базы данных, готовой к пакетной обработке к погрузке. Неудавшиеся электронные письма должны быть повторены до 4 раз.
Дилемма:
Я не уверен, записать ли решение для веб-сервера послать электронные письма (например, сервис окон, который опрашивает электронные письма, готовые отправить) или возможно использовать почту базы данных SQL, которую легко установить и использовать и не требует большой разработки.
Факт вложения находятся на веб-сервере, предлагает мне использовать решение для веб-сервера, но мне было бы интересно видеть, пропустил ли я что-то.
Во-первых, будьте осторожны с отправкой тысяч электронных писем в день пакетами. Это хороший способ попасть в черный список других почтовых серверов или даже вашего интернет-провайдера. Во-вторых, я бы порекомендовал использовать .NET. Эта проблема попахивает службой. Даже если вы не создаете его как услугу сегодня, вы можете захотеть сделать это в какой-то момент в будущем. С помощью .NET вы можете реорганизовать свое решение для параллельной отправки электронных писем или доступа к очереди в многопоточном режиме. Все это было бы сложно в SQL Server. Короче говоря, .NET дает вам возможность создавать более расширяемые решения, чем SQL Server.
Думаю, вы сами ответили на свой вопрос. Поскольку вы выбрали постановку электронных писем в очередь в базе данных IMO, создание управляемого решения на веб-сервере для отправки электронных писем будет небольшим преимуществом.
Я бы принял во внимание тот факт, что вы храните вложения на веб-сервере. Это означает, что сетевой трафик между веб-сервером и базой данных будет больше, чем если бы веб-сервер отправлял электронные письма (при условии, что они работают на разных физических устройствах). серверов). Судя по вашим цифрам, это может составлять 5 ГБ трафика в день во вложениях. Однако я бы выбрал решение DB и тщательно протестировал бы его, чтобы увидеть, не станет ли трафик проблемой. Если это так, вы не потеряли много времени на разработку решения для БД.
Я бы предпочел .NET вместо отправки писем из БД. Отправка электронных писем в .NET также очень проста и не требует каких-либо значительных затрат времени на настройку или разработку.
Кстати, я понятия не имею, почему SQL Server может отправлять электронные письма, поскольку эта функция, похоже, не соответствует модели хранения данных. SQL Server также выполняет 3D-рендеринг?