2011-04-25 2 views
0

У нас есть несколько вопросов с электронной почтой, которые мы ищем для решения.Решение электронной почты для очередей, просмотра и перехвата писем?

  • Если сервер SMTP вниз, мы хотели бы наши пакетные задания в очередь сообщения электронной почты, они создают где-то так что мы не должны повторно рабочие места. Что будет хорошей системой массового обслуживания и как вы будете отправлять электронные письма из очереди на SMTP-сервер?
  • По умолчанию при отладке мы не хотим отправлять электронные письма. У нас было несколько случаев, когда разработчик неосознанно отправлял электронные письма пользователям при переходе через код. Как мы можем предотвратить это снова?
  • Иногда разработчику может потребоваться запустить пакетное задание вручную, добавив отладчик и выполнив код, указывающий на производственные данные. В этом случае любое электронное письмо, которое отправляется пакетным заданием, которое мы хотели бы просмотреть, прежде чем оно будет отправлено. Есть ли простой способ идентификации этих писем среди всех отправленных электронных писем, а затем приостановить отправку электронной почты достаточно долго, чтобы просмотреть ее?

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

Что вы посоветуете? Есть ли решение, которое может справиться с этими проблемами или набором решений? Благодарю.

ответ

0

Мы решили проблему с проблемой SMTP-сервера с помощью try/catch - если стандартный SMTP-сервер недоступен, мы используем службы SMTP, предоставляемые IIS, путем записи в каталог отправки SMTP, как показано здесь:

http://systemnetmail.com/faq/4.7.aspx

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

Записи электронной почты для SMTP каталога пикапа службы сервера IIS является еще новой функцией System.Net.Mail. SMP pickup directory представляет собой специальный каталог , используемый службой Microsoft SMTP для отправки электронной почты. Любые файлы электронной почты , найденные в этом каталоге, обрабатываются и доставляются через SMTP. Если процесс доставки терпит неудачу, файлы находятся в каталоге , хранящемся в каталоге очереди для доставки в другое время. Если произошла фатальная ошибка (например, ошибка разрешения DNS), файлы перемещаются в каталог Badmail .

Это означает, что, конечно, обеспечение того, чтобы службы SMTP были установлены на рассматриваемый веб-сервер.

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

0

Если вы хотите, чтобы предотвратить отправку сообщений электронной почты при запуске отладочной версии, вы можете написать:

void SendEmail() 
{ 
#if DEBUG 
    // do nothing 
#else 
    // do normal send 
#endif 
} 

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

Если вы хотите просмотреть несколько писем перед отправкой, попробуйте запустить пакетный файл с помощью командной строки. Когда метод SendEmail сохраняет электронные письма в файле, напишите это значение. Процесс, который отправляет/повторяет, не будет отправлять какое-либо сообщение с прикрепленным этим флагом. Скорее, он помещает их в очередную очередь для обзора.

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