2012-05-17 95 views
1

我的c sharp程序當前獲取outlook電子郵件並將它們導入到數據集中。但是,我只收到每封電子郵件的主題。獲取outlook電子郵件的屬性

我正在使用Microsoft.Office.Interop.Outlook.Folder olCurrFolder;,我使用這個變量來獲得主題(olCurrFolder從另一個循環獲取設置)。爲了得到對象我這樣做:

intMailCount = olCurrFolder.Items.Count; 

for (int i = 1; i <= intMailCount; i++) 
{ 
    strSubject = olCurrFolder.Items[i].Subject; 
    strEmailReceived = olCurrFolder.Items[i].Received; 
} 

正如你所看到的,我也試圖讓收到的日期,但Items[i].Received不起作用。當我在Items[i]之後鍵入一個句點時,智能感知不會提取任何內容,並且會有一條消息表明它將在運行時解決。我不知道其他字段被稱爲什麼(即收件日期,發件人,尺寸)。

是否有列表中包含我正在尋找的字段名稱?

回答

1

爲Outlook的MailItem對象的文檔是在這裏:http://msdn.microsoft.com/en-us/library/aa210946(v=office.11).aspx

可以使用ReceivedTime屬性來獲取收到的日期和時間。

intellisense有時不適用於VSTO的原因是許多屬性返回dynamic。動態被視爲一個支持每個可以想象的方法和屬性的對象。這是防止智能感知工作的原因。如果使用不存在的方法,它將編譯,但在運行時失敗。

我發現MSDN文檔在使用VSTO中的動態特性時非常有用。

+0

這正是我一直在尋找和無法在Google上找到它。僅供參考,在該頁面的屬性下,它有一個名爲ReceivedTime的屬性。這個屬性給了我收到的日期和時間在一起,所以這工作完美。對於其他人試圖做同樣的事情,你必須像這樣放置ToString():Items [i] .ReceivedTime.ToString() – mtlca401

+0

哦,是的。我看到了一個房產列表,沒有看到它的時間,所以我認爲它不在那裏。我應該查看「屬性」部分。 :) –

+0

沒有biggie,那些屬性是那種頁面上混亂,所以很容易忽略一些東西。而且,人們會認爲「時間」是指時間而非日期和時間。 – mtlca401

0

這是我做的

for (int i = 1; i <= items.Count; i++) 
{ 
    if (items[i] is Outlook.MailItem) 
    { 
     SenderName = ((Outlook.MailItem)inbox.Items[i]).SenderName; 
     SenderEmail =((Outlook.MailItem)inbox.Items[i]).SenderEmailAddress; 
     Subject = ((Outlook.MailItem)inbox.Items[i]).Subject; 
     Time = ((Outlook.MailItem)inbox.Items[i]).CreationTime.ToString(); 
+0

請勿使用多點表示法。除了效率極低之外,您還將在聯機Exchange模式中用完RPC通道。只有一次檢索該項目作爲循環的開始,並在完成後使用Marshal.ReleaseComObject釋放它。 –

0

如果你不想把對象的每一行,你可以這樣做:

 for (int i = 0; i < items.Count; i++) 
     { 
      var mailItem = items[i] as Outlook.MailItem; 
      if (mailItem != null) 
      { 
       SenderName = mailItem.SenderName; 
       //etc... 
      } 
     } 
相關問題