来自 Web 应用程序的 .NET 实时电子邮件通知

.NET Real Time Email Notifications From Web App

我有一个在 and is hosted in 上运行的 Web 应用程序。我们允许客户设置提醒/提醒,然后在他们登录后通过电子邮件发送给他们。

我们如何将其转变为实时服务。 IE:在数据库中设置的时间自动发送电子邮件。在过去我会使用 windows 服务,但我现在不太确定从哪里开始看。

我不确定您所说的实时电子邮件通知是什么意思,但不要使用 windows 服务,请考虑使用 sendgrid,这是 Azure 中的电子邮件传送服务。

编辑:

对于触发器,您可以使用逻辑应用程序,这样只要数据库中添加了新行,您就可以发送电子邮件,请参阅 https://docs.microsoft.com/en-us/azure/connectors/connectors-create-api-sqlazure

在 azure 中,我们有一个作业调度程序,可以帮助您 运行 一个作业或进行服务调用,这将在预定的时间间隔内触发所有电子邮件。如果有,您也可以安装任何 windows 作业。

您可以查看 Quartz Scheduler,这是我在很多项目中使用过的调度程序之一,应该能够满足您的需求。

我想你想要的是 运行 Azure WebJob 中的数据库检查和电子邮件任务:Run Background tasks with WebJobs

使用 Azure Webjobs,您可以通过 websjob 调度程序按需或按设定的时间间隔执行后台任务 运行。

还有一些链接可以帮助您入门:

按照给定的要求。我的理解是您想在登录数据库时发送电子邮件。我在我的申请中也暗示了同样的事情。 这是实施它的先决条件。

a.) azure queue - 将电子邮件添加到队列。但是如果你使用的是数据库就没问题。在这种情况下,您可以将数据保存到数据库并将 table 的主键添加到队列消息中。这样我们将从基于数据库的主键读取所有需要的数据。

b.) web job sdk - 我们用它来实时发送电子邮件。实际上,当任何项目被添加到队列中时。 web job sdk 自动触发事件。我们编写逻辑以在该事件中发送电子邮件。

c.) 发送网格 - 然后我们将用来发送电子邮件。

过程就是这样。

任何电子邮件发送时

1.) 它记录到与当前工作相同的数据库。

2.) 将主键条目添加到存储队列中。

3.) 作为添加到存储队列的条目。 Web 作业 sdk 事件触发器。在这个事件中我们得到了数据库主键。

4.) write 方法从数据库中获取所有数据。

5.) 使用发送网格发送该电子邮件。

希望对您有所帮助:)

Azure 逻辑应用

选项1

您可以为客户设置的每个提醒创建一个作业,并使用 SendGrid 或其他内置的电子邮件操作来发送提醒。这种方法的好处是您不需要在单独的数据库中维护计划时间的记录。

选项 2

你可以有一个逻辑应用程序 运行s 在循环触发时(例如每分钟 运行s),第一个动作是 运行 一个 SQL 存储获取提醒的过程应该在接下来的几分钟内发送出去,然后使用内置的电子邮件操作发送电子邮件。这种方法的好处是您可以将所有用户的数据保存在您自己的数据库中,如果这是一个问题。

其他选项

您可能会受益于 Azure 上可用的混合服务以节省成本,具体取决于您从客户那里看到的频率 jobs/what。例如,您可以使用 Azure Scheduler 为每个提醒安排一个作业,该操作将是调用一个端点(端点甚至可以是另一个逻辑应用程序)来发送电子邮件。