构建电子邮件发件人服务

Dal*_*Dal 5 c# asp.net mailmessage sql-server-2008

我有几个网络应用程序都利用发送电子邮件,无论是通过联系表格,还是某种通知更新等.

我发现的问题是,没有任何方法可以跟踪从Web应用程序发送的电子邮件,所以我想出了一个可能的解决方案:

图1. 电子邮件发件人服务流程图

这真的很直接 - 而不是让每个Web应用程序自己发送电子邮件,我想通过创建一个中央电子邮件发件人服务来统一该过程.

在基本术语中,每个应用程序只会在数据库的"出站电子邮件"表中使用"收件人","发件人","主题","内容"数据创建一行.

然后,电子邮件发件人服务(Win服务)将从发件箱中选择电子邮件,发送它们,然后标记为已发送.


即使我将"基本电子邮件"信息(来自,来自主题,内容)存储在数据库中,我真正想做的还是存储"MailMessage"对象本身,以便电子邮件发件人服务可以反序列化原始的MailMessage,因为这将允许任何应用程序完全自定义电子邮件.

以这种方式使用MailMessage对象有任何问题吗?

更新:另一个目标是存储已发送的电子邮件日志 - 因此使用数据库的原因.

Jac*_*yan 6

一个更好的架构是让应用程序在发送电子邮件服务上调用某种公共接口.然后,服务本身可以负责在数据库中记录发送.

这种体系结构意味着数据库成为服务的内部,因此减少了应用程序之间的耦合(每个应用程序都知道相对较小的公共契约而不是数据库模式).这也意味着如果您在数据库中存储MailMessage对象时遇到问题,那么您可以更改存储方法而无需更新所有客户端.