我有一个MVC应用程序,它还需要向客户端发送电子邮件。 发送电子邮件时,邮件服务器可能已关闭。所以我想把它们存储在数据库中。 我可以在我的应用程序中实现哪些选项可以检查数据库表并发送未发送的电子邮件?
之前有人这样做过吗?任何提示。
答案 0 :(得分:1)
应该非常简单。您实际上有两个应用程序共享同一个数据库:
MVC应用程序会将邮件消息写入数据库。您可以将信息存储在您喜欢的任何结构中,只要它有足够的信息来构建电子邮件即可。此外,每条记录都有一个“已发送”标志(或“发送日期”,或者其他方式记录是否/何时发送)。
Windows服务会定期(每小时?每分钟?等)检查数据库中是否有“未发送”消息。它可以一个接一个地尝试发送它们。任何时候它成功(好吧,只要它知道无论如何,只要邮件服务器没有错误)它会更新该记录,指示是否/何时发送。
每次都为每条记录执行此操作。由于单个邮件已成功发送,因此它们已更新,不会再次尝试。如果出现错误,则跳过该错误,并继续处理其他消息。对于任何给定的错误,我还建议将该错误记录为数据的一部分,以便稍后检查问题。例如,如果一条消息始终失败,则问题可能出在消息本身而不是邮件服务器上。在某处记录错误可以让你解决这个问题。