导出标准/扩展的用户问候(Exchange 2016)-用于XMedius AVST

问题描述 投票:0回答:1

[在2018年6月18日(我生日BTW)的较早帖子中,用户问“希望是一个简单的问题-一次,我知道用户何时在o365中记录了UM语音邮件的个人问候(常规问候和/或长时间不在的问候语),这些内容使用特殊的项目类型(即“ IPM.Configuration.Um.CustomGreetings.External”)存储在其Exchange收件箱中。我的个人问候语和从收件箱的根目录开始的每个项目(大约900多个项目-里面有很多奇怪的东西)-我再也看不到这样的东西了,很多日志,活动项目和一些消息但是没有关于问候的内容。将所有可能转换为电子邮件类型的内容提取到我经历过的每个文件夹中-没什么希望的。任何人都知道用户UM的自定义问候语(不是自动话务员的录音-这是另一回事)。以及如何到达?”阅读后通过答案以及Jeff Lindborg提供的代码,我认为自己已经到了。经过大量的反复试验,我终于能够安装EWS-FAI模块以及Exchange Web服务API。不幸的是,当涉及到运行提供的代码时,我很困惑。我不是任何形式的开发人员或“编码人员”,但我一直在寻找有效且高效的方法来完成工作。话虽如此,我试图在Win10工作站上运行此程序,但似乎无法弄清楚该程序需要在哪个程序中运行。我已经尝试过Powershell,但这是行不通的。我有权访问用于模拟邮箱的必要帐户以及所需的任何其他权限。我提供了最初提供的代码以供审核。任何其他帮助将不胜感激。

[代码] >>

ExchangeService _service;
        _service = new ExchangeService(ExchangeVersion.Exchange2016); // Exchange2013_SP1);
        _service.Credentials = new WebCredentials("user@domain", "myPw");
        _service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");

        //select the user you're fetching greetings for
        _service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "user@domain");

        //get the root folder for the current account
        var oParamList = new List<FolderId> {WellKnownFolderName.Root};
        var oTemp = _service.BindToFolders(oParamList, PropertySet.FirstClassProperties);
        var oRoot = oTemp.First().Folder;

        var oView = new ItemView(50)
        {
            PropertySet = new PropertySet(BasePropertySet.FirstClassProperties),
            Traversal = ItemTraversal.Associated
        };
        SearchFilter oGreetingFilter = new SearchFilter.ContainsSubstring(ItemSchema.ItemClass,
            "IPM.Configuration.Um.CustomGreetings", ContainmentMode.Substring, ComparisonMode.IgnoreCase);
        var oResults = _service.FindItems(oRoot.Id, oGreetingFilter, oView);

        //fetch the binary for the greetings as values 
        var oPropSet = new PropertySet(BasePropertySet.FirstClassProperties);
        var oRoamingBinary = new ExtendedPropertyDefinition(31753, MapiPropertyType.Binary);
        oPropSet.Add(oRoamingBinary);
        _service.LoadPropertiesForItems(oResults, oPropSet);

        var strFileName = "";
        foreach (var oItem in oResults.Items)
        {
            if (oItem.ItemClass.Equals("IPM.Configuration.Um.CustomGreetings.External",
                StringComparison.InvariantCultureIgnoreCase))
                strFileName = "jlindborg_Standard.wav";
            if (oItem.ItemClass.Equals("IPM.Configuration.Um.CustomGreetings.Oof",
                StringComparison.InvariantCultureIgnoreCase))
                strFileName = "jlindborg_Extended.wav";
            File.WriteAllBytes("d:\\" + strFileName, (byte[]) oItem.ExtendedProperties.First().Value);
        }
    }

[在2018年6月18日(我生日BTW)的较早帖子中,用户问“希望一个简单的问题-一次我知道用户何时在o365中记录了他们对UM语音邮件的个人问候(常规...

powershell exchange-server exchangewebservices office365api
1个回答
0
投票

您发布的代码是c#,因此您需要使用Visual Studio创建C#应用程序,然后添加对EWS托管API的引用并进行编译以使其正常工作(您需要聘请开发人员或学习一些基本的编码)。

EWS-FAI是一个powershell模块,它应该能够返回该项目,并且您应该能够将其写入文件,例如类似的东西

© www.soinside.com 2019 - 2024. All rights reserved.