我必须将电子邮件通知添加到客户端服务器应用程序。
当用户在客户端 UI 上执行某些特定操作时会发生通知。
如果我有一个中间层或在服务器上运行的服务,我可以想象如何做到这一点:
1)我只是创建一个带有“待处理通知”的数据库表
2)当用户执行生成通知的操作时,我将记录添加到表中
3)服务器端我会不断尝试发送这些邮件并在发送成功后将它们从表中删除
现在我现在不能这样做,我计划稍后添加服务,但现在我必须走快速而肮脏的方式。
所以不知何故,我想的是实现这样的事情:
1)当客户端发生通知价值事件时,同一个客户端(我的 exe)尝试发送通知,失败时会将通知记录在“待处理通知”表中(失败可能是因为缺乏互联网连接或任何其他问题)
2)我添加了一个计时器,它可以在任何客户端机器上工作,以检查待处理的通知。如果有任何客户端将尝试发送电子邮件(使用事务:我将一个字段标记为“TryngToSendFromClientX”,如果失败,我将该字段重置为 NULL)
我认为这种方法会起作用,它有明显的局限性(如果失败后没有人登录系统,则不会发送任何通知 - 如果服务“关闭”也是如此)。但是你能评论一下这种方法并提出更好的方法吗?
附加说明(为了更好地理解场景):
a) 注意:所有通知都是从同一个电子邮件帐户发送的。
b) 我不需要跟踪谁发送了电子邮件。
c)现在创建服务的问题是它基本上会使部署复杂化,我需要创建用于监控服务状态的工具。我将来会做的事情,但不是现在,将来我计划向服务添加更多功能(不仅仅是发送通知),所以在这种情况下创建它更有意义。
d) 我将使用 Indy 组件和 SMTP 服务器发送电子邮件。