我有几个 Web 应用程序,它们都使用发送电子邮件的方式,无论是通过联系表,还是某种通知更新等。
我发现的问题是,实际上没有任何方法可以跟踪从 Web 应用程序发送的电子邮件,因此我想出了一个可能的解决方案:
这真的非常简单 - 我不想让每个 Web 应用程序自己发送电子邮件,而是希望通过创建中央电子邮件发件人服务来统一流程。
从根本上说,每个应用程序只需在数据库的“出站电子邮件”表中创建一行,其中包含收件人、发件人、主题、内容数据。
然后,电子邮件发件人服务(Win 服务)将从发件箱中挑选电子邮件,发送它们,然后标记为已发送。
尽管我会在数据库中存储“基本电子邮件”信息(收件人、发件人、主题、内容),但我真正想做的是也存储“MailMessage”对象本身,以便电子邮件发件人服务随后可以反序列化原始 MailMessage,因为这将允许任何应用程序完全自定义电子邮件。
这样使用MailMessage对象有什么问题吗?
更新:另一个目标是存储已发送电子邮件的日志 - 因此使用数据库的原因。
最佳答案
更好的架构是让应用程序调用发送电子邮件服务上的某种公共(public)接口(interface)。然后服务本身可以负责记录数据库中的发送。
这种架构意味着数据库成为服务的内部,因此减少了应用程序之间的耦合(每个应用程序都知道一个相对较小的公共(public)契约而不是数据库模式)。这也意味着如果您确实发现在数据库中存储 MailMessage 对象时出现问题,那么您可以更改存储方法而无需更新所有客户端。
关于c# - 构建电子邮件发件人服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5463551/