如何从VSTO Outlook加载项直接从Outlook 2010收件箱中检索多个用户的电子邮件

时间:2018-09-20 06:12:23

标签: c# outlook vsto exchange-server outlook-addin

当前,在VSTO(VS 2017)中使用C#创建一个Outlook 2010加载项,想知道如何直接从收件箱中检索电子邮件以自动扫描传入邮件的仿冒URL。将为多个用户帐户和PC安装此加载项。我可以使用服务器凭据和EWS直接连接到交换服务器,但是由于它是针对多个低特权用户的,因此有一种方法可以确保他们的用户帐户信息是唯一需要的凭据,而不必连接到交换服务器?

这是我发现的直接连接到交换服务器的示例代码:

using Microsoft.Exchange.WebServices.Data;
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013);
service.Credentials = new WebCredentials("USERNAME", "PASSWORD", "DOMAIN");
service.Url = new Uri("EXCHANGE_WEBSERVICE_URL");

Folder inbox = Folder.Bind(service, WellKnownFolderName.Inbox);
if (inbox.UnreadCount > 0)
{
    ItemView view = new ItemView(inbox.UnreadCount);
    view.PropertySet = PropertySet.IdOnly;
    FindItemsResults<Item> results = service.FindItems(inbox.Id, view);

    foreach (Item item in results.Items)
    {
        EmailMessage email = EmailMessage.Bind(service, new ItemId(item.Id.UniqueId.ToString()));

        //PROCESS EMAIL MESSAGE 
        email.IsRead = true;
        email.Update(ConflictResolutionMode.AlwaysOverwrite);
    }
}

示例代码的创建者致谢

1 个答案:

答案 0 :(得分:0)

绝对没有理由在COM插件中使用EWS。首先,您需要提示用户输入和存储凭据。其次,OOM通过调用Namespace.GetSharedFolder来打开其他用户的文件夹(假设您拥有其他用户的文件夹的权限)。