標籤:style blog http io os 使用 ar for strong
原文: 使用 C# 進行 Outlook 2007 編程
探討如何使用 C# 程式設計語言產生 Outlook 識別的應用程式和 Outlook 增益集。
請從"Add References"對話方塊訪問"COM"選項卡,並選擇"Microsoft Outlook 12.0 Object Library"
using Microsoft.Office.Interop.Outlook;
表 1選擇 Application 類型的成員
CreateItem() |
允許通過編程建立新的 Outlook 項。 |
GetNamespace() |
提供對資料存放區項的訪問。到 Outlook 2007 ,MAPI 是唯一可以使用的命名空間,它用於訪問 Outlook 檔案夾組(收件匣、注釋等)。 |
Quit() |
終止當前 Outlook 會話。 |
COMAddIns |
該屬性允許您在運行時發現插入到當前 Outlook 執行個體中的增益集集合。 |
一旦有了 Application 類型,就能建立新的 Outlook"項"。通過 Microsoft.Office.Interop.Outlook.OlItemType 枚舉可以列出可能的項
public enum OlItemType
{ olAppointmentItem = 1; olContactItem = 2; olDistributionListItem = 7;...}
表 2 詳細列出了 OlItemType 枚舉的成員與 Application.CreateItem() 產生的傳回型別之間的關係。
OlItemType 枚舉值 所產生的類型 基本含義
olAppointmentItem AppointmentItem 表示單個約會。
olContactItem ContactItem 表示單個連絡人。
olDistributionListItem DistributionListItem 表示一個通訊群組清單。
olJournalItem JournalItem 表示單個日記項。
olMailItem MailItem 表示單個電子郵件項。
olNoteItem NoteItem 表示單個注釋。
olPostItem PostItem 表示其他人可能瀏覽的公用資料夾中的公告。
olTaskItem TaskItem 表示單個任務。
獲得現有 Outlook 項
不管對枚舉哪個 Outlook 項感興趣,基本過程都是:
| |
從 Application.GetNamespace() 獲得 NameSpace 類型。 |
| |
從 NameSpace.GetDefaultFolder() 獲得 MAPIFolder 類型。 |
| |
使用 MAPIFolder.Items 索引器枚舉子項。 指定字串"MAPI"作為 GetNamespace() 的參數時,將收到一個 NameSpace 類型,該類型表示具體的 Outlook 資料存放區的抽象層級(目前,"MAPI"是唯一有效命名空間)。 MAPIFolder 類型可以表示給定使用者的郵件儲存中的任何檔案夾(已刪除項、收件匣、日記項等)。 檔案夾選項的完整範圍由 OlDefaultFolders 枚舉來表示: public enum OlDefaultFolders { olFolderCalendar = 9; olFolderConflicts = 19; ...} 要請求具體的檔案夾,請將 OlDefaultFolders 枚舉中的值指定為 NameSpace.GetDefaultFolder() 的參數。 我們有一個名為 DisplayInbox() 的方法,該方法接受 ApplicationClass 類型作為其唯一參數。DisplayInbox() 的實現將獲得當前的 MAPI 命名空間,以便檢索[收件匣] 資料夾中的每個 MailItem。在這裡,我們將使用 MailItem 類型的各種屬性,將接收時間、寄件者名稱和主題列印到控制台 我們執行了一個動態檢查,以確定當前項是否可以被視為 MailItem(通過 C# 的 as 關鍵字),以及如果這樣我們將與類型的各種屬性互動。我們執行該動態檢查的理由是 Outlook 收件匣的確可以包含超過 MailItem 類型的項(例如,滿足請求)。 foreach(MailItem item in inboxFolder.Items) { ... } 在任何情況下,除了 ReceivedTime、SenderName 和 Subject 屬性,MailItem 類型還能夠訪問附件和重要性層級,以及內容的 HTML 表現形式(通過 HTMLBody 屬性)。 與 Outlook 安全更新的衝突 Outlook 啟動的以下對話方塊 |
在OutLook2007的工具中開啟信任中心,點擊編程訪問,選項選為從不向我發出可疑活動警告即可。
附個人代碼:
using Microsoft.Office.Interop.Outlook;
ApplicationClass ac;
NameSpace outlookNS;
outlookNS = ac.GetNamespace("MAPI");
outlookNS.Logon("its8686", "*****#2009",false, true);
MAPIFolder inboxFolder = outlookNS.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
int count = inboxFolder.Items.Count;
foreach (Object obj in inboxFolder.Items)
{
MailItem item = obj as MailItem;
if (item != null)
{
string SenderName = item.SenderName;
string Subject = item.Subject;
DateTime ReceivedTime = item.ReceivedTime;
string Body = item.Body;
}
}
outlookNS.Logoff();
可參照http://blog.csdn.net/myfnst/archive/2004/07/06/35651.aspx
使用 C# 進行 Outlook 2007 編程