我正試圖從Outlook插件獲取發送的郵件時遇到了一些問題。在Outlook Addin中收到發送的郵件
在onItemSend事件,我打開一個對話框,它顯示了一些領域,有消息信息,如收件人,主題等,並一個按鈕,將保存這些信息進入我們的數據庫。另一個要求是,以保存已發送郵件的副本,這是我卡住了...
我可以使用另存爲方法保存該消息,但問題是,當我打開該郵件,它顯示:
此消息尚未發送。此消息將通過 的Microsoft Exchange
發送導致一些問題的用戶,讓他們覺得不發送的消息。
在我的搜索期間,我發現this thread其中一個人有同樣的問題,並且解決方法是使用郵件作爲PostItem而不是MailItem,一旦PostItem被創建爲發送狀態。此外,我們應該將MessageClass屬性設置爲IPM.Note並刪除PR_ICON_INDEX
下面是我用來執行上述步驟的代碼。我發現這個代碼here和改變了一點點:
PostItem postItem = this._email.Application.CreateItem(OlItemType.olPostItem);
postItem.MessageClass = "IPM.Note";
PropertyAccessor pa = postItem.PropertyAccessor;
pa.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x10800003", -1);
postItem.Save();
NameSpace session = postItem.Session;
string postItemEntryID = postItem.EntryID;
Marshal.ReleaseComObject(postItem);
Marshal.ReleaseComObject(pa);
MailItem newMessage = session.GetItemFromID(postItemEntryID) as MailItem;
newMessage.BCC = this._email.BCC;
newMessage.Body = this._email.Body;
newMessage.BodyFormat = this._email.BodyFormat;
newMessage.CC = this._email.CC;
newMessage.HTMLBody = this._email.HTMLBody;
//Hard coded path just for illustration
newMessage.SaveAs("C:\\Temp\\MSG\test.msg", OlSaveAsType.olMSG);
上面的代碼創建一個postitem對象,設置一些屬性並保存到正確的路徑,但它有以下問題:
執行postItem.save,創建postitem消息後,它會在收件箱中讀取消息
保存的消息後,我比較了文件和S在有意義的情況下,原始郵件大小爲580kb,保存後的郵件爲52kb。看起來它沒有複製消息
它丟失了某些嵌入到消息中的圖像,如簽名圖像,顯示了紅色的X。
我如何獲得/創建消息,用確切的消息內容,收件人,附件,屬性等(克隆那種)與發送的狀況,而無需創建收件箱文件夾內的另一消息?
謝謝
請,我必須執行這樣的事情,你可以提供給我的源代碼,或指出我在哪裏可以找到解決方案,我需要存儲一些電子郵件到我們的數據庫。你是怎樣做的 ? – 2016-09-06 08:38:13
請看看[this](https://blogs.msdn.microsoft.com/emeamsgdev/2011/12/06/process-incoming-mail-using-an-outlook-addin)。在這個例子中,它展示瞭如何獲取收到的電子郵件並對其進行處理。如果您需要發送項目,請添加如下所示的處理程序:this.itemsendhndler = new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend); this.Application.ItemSend + = itemsendhndler ;.讓我知道你是否需要任何其他的東西。 :) – UncleFester 2016-09-07 16:13:58