2

我想将 MailMessage 作为参数传递给我的 WCF Web 服务。问题是 MailMessage 不是可序列化的,并且它的许多属性(例如 MailAddress)也不是可序列化的。我如何序列化它?

我已经看到了通过将其用作包装类中的属性来序列化它的教程,但这并不能帮助我通过 WCF 发送它,因为 MailMessage 属性没有显示在客户端(因为它不可序列化) . 我不想只发送基本的字符串值(to、from、body)。我想发送整个 MailMessage 及其所有属性。我怎样才能做到这一点?

更新:

我认为使用 Web 服务和序列化 MailMessage 类根本不值得。序列化类确实有效,但它们的许多方法/构造函数在 WCF 客户端/消费者上不可用。所以我不得不重新编写代码以在客户端从常规类(例如MailMessage)转换为序列化类(例如SerializedMailMessage)。

我决定使用 EmailHelper 创建一个类库,并使用调用应用程序的配置来确定 SMTP 设置。

SmtpSection smtpConfig = ConfigurationManager.GetSection("system.net/mailSettings/smtp") as SmtpSection;
if (smtpConfig != null) {
    // extract values to your SmtpClient
}
4

1 回答 1

5

我必须制作MailMessage 类的Serializeable 版本,并为它的每个属性(例如MailAddress、Attachment...)制作Serializeable 类。

幸运的是,我发现这个免费的开源代码(Composite C1 Contrib by burn ice)已经完成了所有这些:

源代码

许可证详情

于 2012-09-25T20:31:39.387 回答