2013-05-14 69 views
0

我設置的屬性(使其讀取和高重要性)的使用下面的代碼來到微軟的Outlook 2010收件箱中的郵件 -沒有設置接收郵件的屬性在MS Outlook 2010

Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.Application(); 
Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI"); 
Microsoft.Office.Interop.Outlook.MAPIFolder myInbox = mapiNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);  

int i = myInbox.Items.Count; 
((Microsoft.Office.Interop.Outlook.MailItem)myInbox.Items[i]).UnRead = false; 
((Microsoft.Office.Interop.Outlook.MailItem)myInbox.Items[i]).Importance = OlImportance.olImportanceHigh; 

在代碼執行後一次只有一封郵件(我可以看到郵件爲Read並具有高重要性)時正常工作,但是當一次發送三封或四封郵件時,它只設置一封郵件的屬性不是所有的三,四封郵件。

請建議。

回答

0

記得保存郵件上設置任何財產之後。 最重要的是,您的代碼使用多點符號 - 對於每個「。」,您將得到一個全新的COM對象,因此您最終將設置重要屬性的對象與用於設置UnRead屬性的對象不同。

int i = myInbox.Items.Count; 
MailItem msg = (Microsoft.Office.Interop.Outlook.MailItem)myInbox.Items[i]; 
msg.UnRead = false; 
msg.Importance = OlImportance. 
msg.Save(); 

另一個問題是,您認爲Items集合中的最後一個項目是最新的項目。這通常不正確。正如Cremor建議的那樣,使用Items.ItemAdd事件,但仍然不要忘記保存消息。

0

您可以使用該文件夾的Items財產ItemAdd事件:

Items inboxItems = myInbox.Items; 
inboxItems.ItemAdd += HandleItemAdded; 

private void HandleItemAdded(object item) 
{ 
    MailItem mail = item as MailItem; 
    if (mail == null) { return; } 
    mail.UnRead = false; 
    mail.Importance = OlImportance.olImportanceHigh; 
} 
+0

@ user2318170對不起,我修復了代碼。 – cremor 2013-05-14 09:09:24

+0

仍然其跳過的郵件來設置屬性..我一次得到4個郵件此代碼已設置屬性爲3但跳過1 – user2318170 2013-05-14 09:16:39