2012-09-25 90 views
2

我想將MailMessage作爲參數傳遞給我的WCF Web服務。問題是MailMessage不可序列化,並且它的很多屬性(如MailAddress)都不可序列化。我如何序列化它?如何通過WCF Web服務序列化和發送MailMessage?

我見過tutorial通過使用它作爲包裝類中的屬性來序列化它,但是這並不能幫助我通過WCF發送它,因爲MailMessage屬性不會顯示在客戶端上(因爲它不可序列化)。我不想只發送基本的字符串值(從,正文)。我想發送整個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

檢查了這一點..這是一個合理的辦法...... [http://stackoverflow.com/questions/447071/can-i-pass-a-system-net-mailmessage-to-a-wcf-service][1] [1]:http://stackoverflow.com/questions/447071/can-i-pass-a-system-net-mailmessage-to-a-wcf-service – Hrishi

+0

我看到了這些問題,但問題是MailMessage的屬性(如MailAddress)也不可序列化。我想我只是將整個類及其屬性的類重新編寫爲可序列化的類。我更喜歡的是擴展類並使其可序列化的方式。 – Lifes

回答

5

我不得不做出的類MAILMESSAGE的可序列化版本,並可序列化類的每一個它的屬性(例如MailAddress,將附件......)。

幸運的是,我發現已經做了一切,這個免費的開放源代碼(複合體C1的Contrib燒冰):

Source Code

License Details