【问题标题】:How can serialize and send a MailMessage over a WCF Web Service?如何通过 WCF Web 服务序列化和发送 MailMessage?
【发布时间】:2012-09-16 12:12:56
【问题描述】:

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

我已经看到tutorial 用于通过将其用作包装类中的属性来对其进行序列化,但这无助于我通过 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
}

【问题讨论】:

  • 检查一下.. 这是一个合理的方法... [stackoverflow.com/questions/447071/… [1]: stackoverflow.com/questions/447071/…
  • 我看到了这些问题,但问题是 MailMessage 的属性,例如 MailAddress,也不能序列化。我想我只是将整个类及其属性的类重新制作为可序列化的类。我更喜欢的是一种扩展类并以这种方式使其可序列化的方法。

标签: c# web-services serialization mailmessage


【解决方案1】:

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

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

Source Code

License Details

【讨论】:

    猜你喜欢
    • 2011-09-11
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多