有没有一种方法可以序列化 .Net 的 MailMessage 对象?

4
我正在尝试编写一个存储邮件主题、正文、收件人、发件人和附件(最难的部分)到数据库中的过程,以便在未来某个时间发送电子邮件。该过程将以MailMessage对象作为参数。
我的第一次尝试是提取所需部分并将它们存储在数据库中,这样做非常好,除了附件。我无法弄清如何循环遍历集合,然后实际上对它们进行任何操作。
是否有一种简单的方法序列化MailMessage对象,可以将附件内容与之一起传输?
我这样做错了吗?有人以前做过这个吗?

参考我的回答,附带C#代码。 - saille
2个回答

2

真的没有一个好方法来实现这个。所以,我继续使用了最初的方法,遍历MailMessage对象并获取我关心的所有信息。对于附件这一部分,是最困难的部分,每个附件都有一个ContentStream,我只需将该流读入,并写出到磁盘上,存储文件名,然后在需要发送附件时可以重新创建它。

我还没有完全测试过这种方法,所以我暂时不建议其他人使用,但在我们特定的情况下,它似乎是最好的解决方案。


0
如果我必须猜测策略,我会将每个附件转换为字节数组,然后将这些字节数组和消息详细信息放入一个 XML 文档中,然后将该 XML 文档作为参数传递给数据库。

谢谢建议。这不是一个坏主意,但我更希望找到一种从实际附件集合中获取文件的方法,以便我们不必修改任何现有的代码库。目前我只能接受替换“smtp.Send(msg);”为“MyClass.Send(msg);”,而MyClass.Send方法实际上会将此信息存储在数据库中,而不是实际发送它。然后,服务器进程每10分钟唤醒一次,并实际执行电子邮件的发送。 - Matt Dawdy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接