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

Lif*_*fes 2 c# serialization web-services mailmessage

我想将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
}
Run Code Online (Sandbox Code Playgroud)

Lif*_*fes 5

我不得不制作一个Mailizeable版本的MailMessage类,并为它的每个属性(例如MailAddress,Attachment ...)制作Serializeable类.

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

源代码

许可细节