如何使用 ExchangeService 访问共享邮箱 (Outlook 2013)
How can I use ExchangeService to access a shared mailbox (Outlook 2013)
我正在尝试使用 ExchangeService 访问 Outlook 中的第二个邮箱。但是当我 运行 应用程序时,它会获取我的主要电子邮件。值得注意的是,我在这里使用 windows 身份验证,我需要这样做才能正常工作。
var useExchangeServer = new UseExchangeServer("SECONDEMAIL@mycompany.com");
var messages = useExchangeServer.LoadMessages(1);
foreach (var message in messages){ //At this point message has the wrong email...
...
}
这是我的"UseExchangeServer"class
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;
}
}
您需要使用 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;
}
}
干杯
格伦
我正在尝试使用 ExchangeService 访问 Outlook 中的第二个邮箱。但是当我 运行 应用程序时,它会获取我的主要电子邮件。值得注意的是,我在这里使用 windows 身份验证,我需要这样做才能正常工作。
var useExchangeServer = new UseExchangeServer("SECONDEMAIL@mycompany.com");
var messages = useExchangeServer.LoadMessages(1);
foreach (var message in messages){ //At this point message has the wrong email...
...
}
这是我的"UseExchangeServer"class
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;
}
}
您需要使用 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;
}
}
干杯 格伦