2016-07-07 86 views
0

我正試圖從.msg轉換爲.eml文件格式使用Aspose.Email for .NET。很瑣碎:.msg到.eml文件使用Aspose.Email缺少日曆數據

var msg = MapiMessage.FromFile(@"example.msg"); 
MailMessageInterpretor mmi = MailMessageInterpretorFactory.Instance.GetIntepretor(msg.MessageClass); 
MailMessage eml = mmi.Interpret(msg); 
eml.Save(@"example.eml"); 

如果其日曆邀請,我看到它在.msg文件,並在.eml文件,如下圖所示(在底部.msg頂部,.eml):

enter image description here

它還包括.eml內會議.ics文件時,它產生:

內容類型:文字/日曆;方法= 「REQUEST」; NAME = 「meeting.ics的」; 的charset = 「UTF-8」 內容傳輸編碼:的base64

然而,問題是,如果它是一個會議取消,而不是一個邀請:

enter image description here

由此產生的.eml如您所見,不包含包含會議詳細信息,也不會產生.eml包含會議的任何跟蹤.ics(其中確實存在於.msg中)。我可以很容易地解析.msg它:

MapiCalendar calendar = (MapiCalendar)msg.ToMapiMessageItem(); 

爲什麼不鹼基64在所得.eml編碼.ics用於取消?難道我做錯了什麼?這是一個Aspose錯誤嗎?這是正常的行爲嗎?這裏發生了什麼?

回答

1

請您分享一下我們的輸入/輸出文件Aspose.Email forum?我們需要了解您採取了哪些措施來提出這個問題,並會進一步幫助您參加論壇。如果我們發現它是API的錯誤,我們會將其記錄下來供我們的產品團隊調查。

我使用Aspose作爲Developer Evangelist。

編輯

請嘗試mmi.InterpretAsTnef(msg)。雖然它也應該與Interpret一起工作,但它似乎是API的一個問題。我們正在調查這個問題,但是,您可以同時使用InterpretAsTnef。您可以免費在www.Aspose.com上註冊。無論是付費用戶還是非付費用戶,我們的基本支持都是免費的。

+0

對不起,我沒有在論壇上的帳戶。然而,再現步驟非常簡單。 ** 1。**在Exchange上向某人發送會議請求。 ** 2。**在交易所上向該人發送會議取消通知。 ** 3。讓該人保存會議取消電子郵件(雙擊Exchange中的電子郵件,轉到文件,然後另存爲,它將保存爲'.msg'格式)。 ** 4.使用我上面的'.msg'文件中的代碼將它轉換爲'.eml',你會發現它不會保留日曆取消(在最新版本的* Aspose.Email *上進行測試) * *的NuGet)。 – Alexandru

+1

請嘗試InterpretAsTnef。雖然它也應該與Interpret一起工作,但它似乎是API的一個問題。我們正在調查這個問題,但是,您可以同時使用InterpretAsTnef。 您可以在www.Aspose.com上免費註冊。無論是付費用戶還是非付費用戶,我們的基本支持都是免費的。 –

+0

InterpretAsTnef似乎工作,謝謝。 – Alexandru