【问题标题】:Microsoft Graph API - Approve Moderation RequestMicrosoft Graph API - 批准审核请求
【发布时间】:2020-08-20 00:16:07
【问题描述】:

我希望能够通过 Graph API 批准审核请求。我提到了Approve Moderation Request。我无法让它工作。不过,EWS Managed API and Powershell How-To Series Part 11 Moderation 提供了一个 PowerShell 脚本,我设法开始工作了。

这不是 Graph API 中受支持的功能,因此需要进行一些修改。我想要一些有关如何执行此操作的指导。

这是我发送到端点https://graph.microsoft.com/v1.0/me/sendMail的JSON

{
    "message": {
        "subject": "Approve:MessageName"
    },
    "toRecipients": [
        {
            "emailAddress": {
                "name": "Microsoft Exchange",
                "address": "systemmailbox@domain.com"
            }
        }
    ],
    "singleValueExtendedProperties": [
        {
            "id": "Binary 0x31",
            "value": "7gd324tgcxJJNkEuxk2DP2Xk+M/fxw=="
        },
        {
            "id": "String 0x001A",
            "value": "IPM.Note.Microsoft.Approval.Reply.Approve"
        }
    ]
}

这是我收到的回复

{
    "error": {
        "code": "ErrorInvalidRecipients",
        "message": "At least one recipient isn't valid., A message can't be sent because it contains no recipients.",
        "innerError": {
            "date": "2020-08-19T23:40:07",
            "request-id": "7g5h732v-6uhb-3212-b6f1-43f6eeb139wq"
        }
    }
}

任何帮助将不胜感激。

【问题讨论】:

    标签: c# microsoft-graph-api office365 microsoft-graph-sdks microsoft-graph-mail


    【解决方案1】:

    您的 Json 请求中有语法问题,例如,在主题结束后仔细查看消息 },这意味着您发布的唯一内容就是应该是消息的主题

    {
        "message": {
            "subject": "Approve:MessageName",
            "toRecipients": [
                {
                    "emailAddress": {
                        "name": "Microsoft Exchange",
                        "address": "address.com"
                    }
                }
            ],
            "singleValueExtendedProperties": [
                {
                    "id": "Binary 0x31",
                    "value": "7gd324tgcxJJNkEuxk2DP2Xk+M/fxw=="
                },
                {
                    "id": "String 0x001A",
                    "value": "IPM.Note.Microsoft.Approval.Reply.Approve"
                }
            ]
        }
    }

    附加

    为了使这项工作正常工作,您需要从应用程序邮箱中获取 Approval Request 以获取 Graph 类似这样的查询

    https://graph.microsoft.com/v1.0/me/mailFolders('Inbox')/messages?$filter=singleValueExtendedProperties/any(ep:ep/id eq 'String 0x001a' and ep/value eq 'IPM.Note.Microsoft.Approval.Request')&$expand=singleValueExtendedProperties($filter%3D(Id eq 'Binary 0x0031') or (Id eq 'String 0x0E1D'))
    

    这将为您提供您需要在发送中使用的报告标记 0x0031 值,并且您还需要包含 Approve Verb Extended 属性

    {
                        id = "String {00062008-0000-0000-C000-000000000046} Id 0x8524"
                        value = "Approve"
     }
    

    我将我博客中的脚本转换为本周发布的脚本,该脚本仅批准邮箱中的最后一封电子邮件,您可以查看https://github.com/gscales/Powershell-Scripts/blob/master/Graph101/Moderation.ps1(查看 Invoke-ApproveModerationRequest)

    【讨论】:

    • 感谢您的回答格伦。当我发送请求时,我收到此消息 '您的消息未送达,因为收件人的电子邮件提供商拒绝了它。' 我还想知道对于 ID“Binary 0x31”,我是否提供了电子邮件?
    • 使用 PowerShell 脚本时,我没有消息未传递的问题。此外,我是否需要包含更多属性才能批准电子邮件?
    • 非常感谢您的回答格伦。它现在有效!我想知道是否有任何资源可以了解有关如何使用 singleValueExtendedProperties 以及如何构造 URL 来检索其他信息的更多信息。我假设我们可以使用 MFCMapi 等工具中提供的信息从电子邮件中检索不同的属性
    • 是的,MAPI 编辑器是最好的资源,Exchange 协议文档docs.microsoft.com/en-us/openspecs/exchange_server_protocols/… 有助于分解特定二进制属性的值的含义。此外,虽然这适用于 MAPI docs.microsoft.com/en-us/office/client-developer/outlook/mapi/…,但了解标记、命名(字符串和盖子)的 3 种不同属性类型将有很大帮助。
    • 谢谢格伦。我去看看
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多