如何通过WCF Web服务序列化和发送MailMessage?

时间:2012-09-25 01:34:23

标签: c# web-services serialization mailmessage

我想将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
}

1 个答案:

答案 0 :(得分:5)

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

幸运的是,我发现这个免费的开源代码(通过燃烧冰的复合C1贡献)已经完成了所有这些:

Source Code

License Details