Microsoft Graph:如何从电子邮件中获取别名?

时间:2020-02-19 02:50:16

标签: microsoft-graph-api microsoft-graph-mail

当我使用Microsoft Graph检索邮件的toRecipientsinternetMessageHeaders时,我无法找到邮件发送到的实际电子邮件别名。如何获得别名?它总是返回“父”帐户,而不返回别名帐户。

例如,这显示alias1@company.com作为帐户email1@company.com的别名。

请求

https://graph.microsoft.com/v1.0/users/email1@company.com?$select=proxyAddresses

响应:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(proxyAddresses)/$entity",
    "proxyAddresses": [
        "smtp:alias1@company.com",
        "X500:/o=Org1/ou=External (xxxxx)/cn=Recipients/cn=00000000000000000000",
        "x500:/o=ExchangeLabs/ou=Exchange Administrative Group (xxxxx)/cn=Recipients/cn=1111111111111111",
        "smtp:email1@company.mail.onmicrosoft.com",
        "X500:/o=Org1/ou=Exchange Administrative Group (xxxxx)/cn=Recipients/cn=yyyyyyyy",
        "smtp:email1@company.onmicrosoft.com",
        "SMTP:email1@company.com"
    ]
}

然后我向alias1@company.com发送电子邮件。检索toRecipientsinternetMessageHeaders时,只有父帐户email@company.com,我看不到别名。

请求

https://graph.microsoft.com/v1.0/me/messages/{messageId}?$select=toRecipients,internetMessageHeader

响应:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('...')/messages(toRecipients,internetMessageHeaders)/$entity",
    "@odata.etag": "W/\"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\"",
    "id": "{messageId}",
    "internetMessageHeaders": [
        {
            "name": "Received",
            "value": "...."
        },
        {
            "name": "Received",
            "value": "..."
        },
        {
            "name": "Received",
            "value": "..."
        },
        {
            "name": "Authentication-Results",
            "value": "company.com; dkim=none (message not signed) header.d=none;company.com; dmarc=none action=none header.from=company.com;"
        },
        {
         ...
        }
    ],
    "toRecipients": [
        {
            "emailAddress": {
                "name": "FirstName LastName",
                "address": "email1@company.com"
            }
        }
    ]
}

2 个答案:

答案 0 :(得分:2)

我在另一篇SO文章中发现了这一点:Can you get PR_TRANSPORT_MESSAGE_HEADERS 0x007D from the .Net Microsoft Graph API?

这将返回您需要的标题

答案 1 :(得分:1)

你不能。

Microsoft Exchange Server,Office 365和Outlook.com(以前称为Hotmail)不保留(或至少公开)SMTP RCPT TO值(即信封地址),该值不同于{{1} },To:Cc:标头(请注意,Bcc:标头通常根本不会发送给接收者)。

这是电子邮件用户如何接收看起来不适合他们的电子邮件的方式(因为电子邮件服务器使用Bcc值来路由电子邮件,而忽略{{1} }标头。

请注意,当RCPT TOTo:RCPT TO标头中没有出现To:值时,反垃圾邮件软件通常会标记电子邮件1990年代末/ 200年代初大量发送的垃圾邮件没有个性化的Cc:标头。

警告:下面的社论内容:

我确实提交了具有Office 365支持的请求(因为我是企业订户,我希望这意味着什么),以请求他们添加对存储Bcc:信封地址的支持,但该请求被扔到了积压,因此永远不会发生。这是Microsoft坚决拒绝采用的电子邮件系统的另一个明显特性,就像一次性地址,邮件标记,内联引用回复,将邮箱与用户分开以及对话线程的树状视图一样-and more besides 。 Oy vey。