2011-07-27 59 views
5

Tôi đã định cấu hình hai tài khoản Exchange trong Outlook 2010, tuy nhiên tôi không thể tìm hiểu cách truy cập Hộp thư đến của tài khoản thứ hai. Session.GetDefaultFolder() luôn trả lại giá trị đầu tiên.Nhận Hộp thư đến từ Outlook

Kể cả liệt kê Session.Accounts, tìm đúng tài khoản và gọi Session.Account(found one).Store.GetDefaultFolder() trả về Hộp thư đến sai (từ tài khoản trao đổi mặc định, không phải tài khoản phụ).

+0

Rất muốn biết mã của tôi có hiệu quả với bạn không. – JimmyPena

Trả lời

4

Điều này có hiển thị cho bạn tất cả các Hộp thư đến có sẵn không?

Sub LoopThroughInboxes 

Dim ol As Outlook.Application 
Dim ns As Outlook.NameSpace 
Dim i As Long 

Set ol = Outlook.Application 
Set ns = ol.GetNamespace("MAPI") 

For i = 1 To ns.Folders.Count 
Debug.Print ns.Folders(i).Name 
Next i 

Nếu vậy thì ns.Folders(i).Folders("Inbox") sẽ đưa bạn hộp thư đến cho mỗi hộp thư.

3

Sử dụng Store.GetDefaultFolder thay vì Namespace.GetDefaultFolder. Lưu ý rằng Store.GetDefaultFolder đã được thêm vào Outlook 2010. Trong các phiên bản trước của Outlook, hãy sử dụng Mở rộng MAPI (C++ hoặc Delphi) hoặc Redemption (RDOStore.GetDefaultFolder.

1

Có thể bạn đã từ bỏ câu hỏi này, nhưng ở đây ...

tôi đã có vấn đề này cùng trước và tôi giải quyết nó bằng cách thêm API Quản lý tài khoản Outlook. Thật không may cho bạn, điều này một C++ hướng API. (addin của tôi đã được phát triển trong C++)

Hơn nữa, OOM (Mô hình đối tượng Outlook) mà VBA và .NET addins sử dụng có hỗ trợ nghèo nàn (nếu có) cho nhiều tài khoản. về cơ bản đã thêm nhiều tài khoản vào tiểu sử của bạn.

Vì vậy, bạn có thể phải xuống cấp độ, sử dụng MAPI với C++ và sau đó móc trong API quản lý tài khoản Outlook. Đó là rất nhiều công việc, nhưng đó là chính xác những gì tôi đã làm và nó làm việc như một say mê.

Ngoài ra, đây là một ví dụ: http://www.codeproject.com/KB/IP/IOlkAccountManager.aspx

3

To Go vào thư viện Mapix

Mapix thư viện liên kết như đưa ra dưới đây

Mapix library for C++/MFC

Lưu ý: Thư viện này có giá trị trong Inbox email trong MS Outlook

0

Tôi đoán đây là một cái cũ, nhưng ai đó có thể cần nó một ngày. Đây là mã để lặp lại tất cả các thư mục "Thư đã gửi" trong Outlook. (Tôi nghĩ rằng điều này sẽ chỉ làm việc cho Outlook 2010 và mới hơn).

MSOutlook._NameSpace ns = Globals.ThisAddIn.Application.GetNamespace("MAPI"); 
var accounts = ns.Accounts; 
foreach (MSOutlook.Account account in accounts) 
{ 
    try 
    { 
     // You might want to test if DeliveryStore is null, in case this account is not an Exchange account 
     MSOutlook.MAPIFolder sentFolder = account.DeliveryStore.GetDefaultFolder(MSOutlook.OlDefaultFolders.olFolderSentMail); 
     if(sentFolder != null) 
     { 
      SentItems = sentFolder.Items; 
      SentItems.ItemAdd += LogMethods.Items_Sent_ItemAdd; 
     } 
    } 
    catch (Exception e) 
    { 
     BaseClass.log.Log(LoggLevel.Warning, e.Message); 
    } 
} 
Các vấn đề liên quan