首页 > 解决方案 > Microsoft Graph:向用户收件箱插入消息(邮件)

问题描述

我有一个 Microsoft 应用程序(具有 Mail.Read/Write 权限),我需要将邮件(.eml 扩展名文件)插入用户收件箱。

那可能吗?我知道使用 Gsuite 可以使用“插入”API 完成,并且想知道 Graph API 是否存在类似的东西。

我不是在谈论向用户发送新邮件或在用户收件箱中插入现有邮件的附件,而是在他的收件箱中插入全新的电子邮件(无需通过 SPF 或通常在邮件之前进行的任何检查进入最终用户的收件箱)。

查看 Graph API 文档下的 Mail 部分并没有太大帮助。

如果那不可能,也许有解决方法?

编辑:似乎最好的选择是使用“发送邮件”API并指定“saveToSentItems”:False ..这里唯一的问题是我的应用程序也需要请求Mail.Send权限。

谢谢

标签: microsoft-graph-api

解决方案


您不需要使用发送邮件 api,因为您所做的只是在邮箱中创建一个项目。如果您希望它显示为已发送邮件(而不是草稿),则需要设置 PidTagMessageFlags 扩展属性(与 EWS https://docs.microsoft.com/en-us/exchange/client中的相同) -developer/exchange-web-services/how-to-import-items-by-using-ews-in-exchange)。此外,如果您希望它在过去发送时出现,则需要设置的其他扩展属性很少。例如

{
    "Subject": "test1234",
    "Sender": {
        "EmailAddress": {
            "Name": "blah",
            "Address": "blah@blah.com"
        }
    },
    "Body": {
        "ContentType": "HTML",
        "Content": "123Body"
    },
    "SingleValueExtendedProperties": [
        {
            "PropertyId": "Integer 0x0E07",
            "Value": "1"
        },
        {
            "PropertyId": "SystemTime 0x0039",
            "Value": "2019-06-12T10:10:47.2048+10:00"
        },
        {
            "PropertyId": "SystemTime 0x0E06",
            "Value": "2019-06-12T10:10:47.2048+10:00"
        }
    ]
}


推荐阅读