Использование MSMQ не является хорошим решением, поскольку имеет ограничение 4 МБ для каждого размера. http://blogs.msdn.com/b/johnbreakwell/archive/2007/08/22/why-is-there-a-4mb-limit-on-msmq-messages.aspx
В худшем случае, если MSMQ завершится неудачно, например, из-за ошибки обработки или внезапного выключения, будет потеряно много сообщений. В моем случае это решение хорошо, когда аппаратное и программное обеспечение установлено почти идеально
Лучше использовать службу баз данных и окон, поскольку она проста и не требует особых усилий.
Я обычно использую комбинацию базы данных и файла. База данных содержит таблицу для сохранения информации заголовка и отметку о том, что сообщение было действием (либо успешным, либо ошибочным, либо другим), а файлы содержат сообщение (в формате html или обычное) и вложение в исходном формате.
Когда процесс запускается для отправки, он быстрее собирает сообщения из файлов, чем из запросов blob / clob.
Так как они используют файловую систему в приложении, вы можете добавить аппаратное обеспечение, такое как сервер или компоненты, или еще, чтобы легко добавить доступность системы.
База данных также может быть добавлена, но это обойдется вам дороже в программном обеспечении для базы данных.
Я добавляю тестовое электронное письмо после отправки электронного письма в x раз, чтобы убедиться, что оно работает хорошо; это тестовое электронное письмо отправляется на мою собственную или фиктивную почту и в приложение для проверки тестового электронного письма, которое совпадает с тем, которое отправляется и получает. Если это то же самое, отправка ожидающего электронного письма продолжится снова
Другой способ, если вы используете MS Exchange, вы можете использовать очередь сообщений, используя ее веб-сервис для очереди отправки. Это простой способ, но вам нужна лицензия.
В библиотеке MSDN вы можете увидеть, как использовать веб-сервис MS Exchange.