我想将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
}
答案 0 :(得分:5)
我必须制作MailMessage类的Serializeable版本,并为每个属性创建Serializeable类(例如MailAddress,Attachment ...)。
幸运的是,我发现这个免费的开源代码(通过燃烧冰的复合C1贡献)已经完成了所有这些: