gpt4 book ai didi

delphi - 从 2 层应用程序发送电子邮件通知的建议,客户端可能未连接到 Internet

转载 作者:行者123 更新时间:2023-12-03 19:35:51 26 4
gpt4 key购买 nike

我必须将电子邮件通知添加到客户端服务器应用程序。

当用户在客户端 UI 上执行某些特定操作时会发生通知。

如果我有一个中间层或在服务器上运行的服务,我可以想象如何做到这一点:

1)我只是创建一个带有“待处理通知”的数据库表

2)当用户执行生成通知的操作时,我将记录添加到表中

3)服务器端我会不断尝试发送这些邮件并在发送成功后将它们从表中删除

现在我现在不能这样做,我计划稍后添加服务,但现在我必须走快速而肮脏的方式。

所以不知何故,我想的是实现这样的事情:

1)当客户端发生通知值(value)事件时,同一个客户端(我的 exe)尝试发送通知,失败时会将通知记录在“待处理通知”表中(失败可能是因为缺乏互联网连接或任何其他问题)

2)我添加了一个计时器,它可以在任何客户端机器上工作,以检查待处理的通知。如果有任何客户端将尝试发送电子邮件(使用事务:我将一个字段标记为“TryngToSendFromClientX”,如果失败,我将该字段重置为 NULL)

我认为这种方法可行,它有明显的局限性(如果失败后没有人登录系统,则不会发送任何通知 - 如果服务“关闭”也是如此)。但是你能评论一下这种方法并提出更好的方法吗?

附加说明(为了更好地理解场景):

a) 注意:所有通知都是从同一个电子邮件帐户发送的。

b) 我不需要跟踪谁发送了电子邮件。

c)现在创建服务的问题是它基本上会使部署变得复杂,我需要创建用于监控服务状态的工具。我将来会做的事情,但不是现在,将来我计划向服务添加更多功能(不仅仅是发送通知),所以在这种情况下创建它更有意义。

d) 我将使用 Indy 组件和 SMTP 服务器发送电子邮件。

最佳答案

如果您现在不愿意创建服务,我认为您会被您描述的场景所困扰。尽管您可以采取一些措施来规避在仍有待处理消息时没有用户启动客户端的问题。

您可以添加一个命令行实用程序(或 bepe4711 建议的命令行参数),它只会检查待处理的消息并尝试发送它们。

将此命令行实用程序添加到注册表中的 StartUp 文件夹或 Run 项。这种方式至少会在计算机重新启动时发送消息,即使用户没有启动您的应用程序。

添加计划任务以每天至少运行一次此实用程序。可以通过代码或安装程序添加计划任务。

如果您两者都做,您将只需要担心那些永远不会再次启动计算机的用户的未决消息。

关于delphi - 从 2 层应用程序发送电子邮件通知的建议,客户端可能未连接到 Internet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3107936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com