【问题标题】:How to retrieve emails directly from Outlook 2010 inbox for multiple users, for a VSTO Outlook add-in如何直接从 Outlook 2010 收件箱中为多个用户检索电子邮件,用于 VSTO Outlook 加载项
【发布时间】:2018-09-20 06:12:22
【问题描述】:

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

这是我找到的直接连接到 Exchange 服务器的示例代码:

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);
    }
}

示例代码的创建者致谢

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 嗨@Dmitry 感谢您回答我的问题,COM 加载项和 VSTO 加载项之间的真正区别是什么?我已经尝试过研究它,但我仍然无法掌握其中的区别。
    • 就 Outlook 而言,没有。 VSTO 只是一个使创建 COM 插件更容易的包装器。
    猜你喜欢
    • 2017-07-23
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    相关资源
    最近更新 更多