2015-10-06 128 views
1

我正尝试使用ExchangeService访问Outlook中的第二个邮箱。但是当我运行该应用程序时,它抓住了我的主要电子邮件。值得注意的是,我在这里使用Windows身份验证,并且我需要这个工作。如何使用ExchangeService访问共享邮箱(Outlook 2013)

var useExchangeServer = new UseExchangeServer("[email protected]"); 
var messages = useExchangeServer.LoadMessages(1); 

foreach (var message in messages){ //At this point message has the wrong email... 
... 
} 

这里是我的“UseExchangeServer”类

public UseExchangeServer(string mailBox) 
    { 
     _service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); 
     _service.UseDefaultCredentials = true; 
     _service.AutodiscoverUrl(mailBox); 
    } 

public FindItemsResults<Item> GetLastItems(int numberOfItems) 
    { 
     return _service.FindItems(WellKnownFolderName.Inbox, new ItemView(numberOfItems)); 
    } 

public IEnumerable<EmailMessage> LoadMessages(int numberOfMessages) 
    { 
     var findResults = GetLastItems(numberOfMessages); 

     foreach (var item in findResults.Items) 
     { 
      var message = EmailMessage.Bind(_service, item.Id, new PropertySet(BasePropertySet.IdOnly, ItemSchema.Attachments)); 
      message.Load(); 
      yield return message; 
     } 
    } 

回答

2

您需要使用FolderId超载指定要以任何方式进入属于您正在使用将要使用的凭据的邮箱的邮箱所以你需要做的是这样的与您的代码如下

public UseExchangeServer(string mailBox) 
{ 
    _service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); 
    _service.UseDefaultCredentials = true; 
    _service.AutodiscoverUrl(mailBox); 
} 

public FindItemsResults<Item> GetLastItems(int numberOfItems,string mailBox) 
{ 
    FolderId FolderToAccess = new FolderId(WellKnownFolderName.Inbox,mailBox); 
    return _service.FindItems(FolderToAccess, new ItemView(numberOfItems)); 
} 

public IEnumerable<EmailMessage> LoadMessages(int numberOfMessages) 
{ 
    var findResults = GetLastItems(numberOfMessages); 

    foreach (var item in findResults.Items) 
    { 
     var message = EmailMessage.Bind(_service, item.Id, new PropertySet(BasePropertySet.IdOnly, ItemSchema.Attachments)); 
     message.Load(); 
     yield return message; 
    } 
} 

干杯 格伦

+1

它不会让我投票,因为我仍然是一个新手,但这是一个谢谢一堆答案! – MistaGoustan

+0

@ glen-scales消息和约会都可以正常读取,但它不能使用'new FolderId(WellKnownFolderName.Contacts,mailBox);(在outlook联系人显示为\\ SECONDEMAIL'而不是'SECONDEMAIL @ mycompany .com“' – jpfreire

+0

顺便说一下,它是一个共享邮箱我试图从 – jpfreire

相关问题