使用 C# 進行 Outlook 2007 編程

來源:互聯網
上載者:User

標籤: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) { ... }

在任何情況下,除了 ReceivedTimeSenderNameSubject 屬性,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 編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.