2014-03-13 48 views
2

我的目標是將消息參數(from,to,body,subject等)和創建.eml文件。創建.eml文件而不將EmailMessage首先保存到郵箱

我目前使用EWS託管API(儘管我打開其他建議)來創建EmailMessage對象。而不是將郵件保存到郵箱或發送郵件(這是不可能的,因爲我使用的應用程序的帳戶由於安全策略而無法訪問任何郵箱),我想創建一個.eml文件。

我適應一些代碼,我從另一個答案,看起來前途無量發現:

EmailMessage message = new EmailMessage(service); 

//message initialization code 
//... 

using (FileStream fs = File.Open(@"message.eml", FileMode.Create, FileAccess.Write)) 
{ 
    message.Load(new PropertySet(ItemSchema.MimeContent)); 
    var mc = message.MimeContent; 
    fs.Write(mc.Content, 0, mc.Content.Length); 
} 

,但我得到的message.Load異常()說:「不能執行此操作,因爲此服務對象沒有按沒有身份證。「通過一些小調試,我基本上看到了這個消息.Id是空的。 Id沒有setter。我相信這是因爲郵件在保存到文件夾之前沒有得到ID,這是我無法做到的。

有什麼辦法可以解決這個問題嗎?

謝謝

回答

1

EmailMessage類沒有MIME解析器/寫入器。 MimeContent由服務器創建。解決方法是創建自己的解析器來解析出在EmailMessage對象上設置的屬性。如果您不保存到服務器,爲什麼使用EmailMessage類?

+0

我使用EmailMessage類,因爲我認爲它有一個方法來生成MimeContent並保存到eml文件(Load方法)。有沒有辦法利用服務器生成MimeContent的任何邏輯而不保存到它?如果沒有,是否有關於如何正確格式化eml文件的指導方針/文檔? (我的理解不一定)謝謝 – thogue

+0

我的理解是.eml格式基於RFC822(http://www.rfc-editor.org/rfc/rfc822.txt)或其後繼RFC。您可能試圖查看是否有人向.eml解析器發送了EmailMessage,或者您可以檢查.eml文件(它是純文本),以便您可以創建自己的解析。 –

相關問題