ASP.NET MVC + приложение SQL Server: лучший способ отослать событийно-ориентированные уведомления по электронной почте

Согласно спецификации XML схемы , временные стоимости даты должны быть в формате ISO8601, например, что-то как

2009-03-13T22:16:00

5
задан wgpubs 20 September 2009 в 22:52
поделиться

5 ответов

Вы можете добавить обычное действие в контроллер

Function SendEmails() As ActionResult
    Dim result As String = ""
    ''//big timeout to handle the load
    HttpContext.Server.ScriptTimeout = 60 * 10 ''//ten minutes

    result = DoTheActualWork()

    ''//returns text/plain
    Return Content(result)

End Function

А затем вызвать страницу из запланированной задачи. Может быть запланированной задачей на сервере или на любом компьютере. Используйте для этого .vbs:

SendEmails.vbs:

''//Force the script to finish on an error.
On Error Resume Next

''//Declare variables
Dim objRequest
Dim URL

Set objRequest = CreateObject("Microsoft.XMLHTTP")

''//Put together the URL link appending the Variables.
URL = "http://www.mysite.com/system/sendemails"

''//Open the HTTP request and pass the URL to the objRequest object
objRequest.open "POST", URL , false

''//Send the HTML Request
objRequest.Send

''//Set the object to nothing
Set objRequest = Nothing
2
ответ дан 14 December 2019 в 13:41
поделиться

Я хотел бы сначала сохранить все ваши электронные письма, уведомления и т. Д. В базе данных / таблице, а затем иметь службу, которая опрашивает новые записи в этой базе данных или таблице, которая обрабатывает фактическую отправку электронной почты / notification.

Для решения ваших конкретных ситуаций вы можете настроить контроллеры для записи в БД, когда требуется электронное письмо / уведомление, а служба, которая выполняет определенные интервалы / проверки событий, также записывает в БД для создания нового электронного письма. Таким образом, ваше приложение и служба не заботятся о том, как и что происходит с этими уведомлениями, они просто говорят: «Эй, сделайте что-нибудь». и служба электронной почты / уведомлений фактически выполняет реализацию.

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

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

4
ответ дан 14 December 2019 в 13:41
поделиться

Это можно сделать с помощью агента SQL Server, подробнее об этом читайте здесь:

http://msdn.microsoft.com/en-us/library/ms189237.aspx

0
ответ дан 14 December 2019 в 13:41
поделиться

Вы можете разместить рабочий процесс Windows или службу Windows. и настроить очередь сообщений для обработки этих событий. Вы можете просто использовать базу данных для своей очереди сообщений, или вы можете использовать очередь сообщений ms или использовать триггеры в базе данных. Но такие функции не должны входить в обязанности вашего интерфейсного веб-приложения. Если доходит до дела, вы можете создать другой поток в вашем приложении asp.net для обработки этой очереди.

0
ответ дан 14 December 2019 в 13:41
поделиться

Похоже на задание службы или запланированное задание.

Вы не хотите делать это в ASP.NET, потому что вам придется настраивать IIS, чтобы поддерживать работу вашего приложения все время, что может быть не самой лучшей идеей.

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

Служба не идеальна, поскольку она действительно будет делать что-то только один раз в день. Но вы можете настроить службу wcf и поставить веб-сайт в очередь, используя эту службу.

0
ответ дан 14 December 2019 в 13:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: