Microsoft Graph:向用户收件箱中插入一条消息(邮件)

时间:2019-06-11 07:47:05

标签: microsoft-graph

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

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

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

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

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

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

谢谢

1 个答案:

答案 0 :(得分:0)

您不需要使用发送邮件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"
        }
    ]
}