通过 Azure AD Graph API 作为电子邮件别名发送电子邮件

Send email thru Azure AD Graph API as email alias

在 Graph API 浏览器中,您可以使用端点
发送电子邮件 https://graph.microsoft.com/v1.0/me/sendMail

的基本json有效载荷
"message": {
    "subject": "Meet for lunch?",
    "body": {
        "contentType": "Text",
        "content": "The new cafeteria is open."
    },
    "toRecipients": [
        {
            "emailAddress": {
                "address": "user@domain.com"
            }
        }
    ],
    "from":{
        "emailAddress": {
            "address": "smtp:my_alias@domain.com"
        }
    }
}


当我发送此请求时,它仍将电子邮件发送为 user@domain.com 而不是我的电子邮件别名。 当我 运行 端点
时,我仍然可以在那里看到电子邮件别名 https://graph.microsoft.com/beta/me/
proxyAddresses
下 我查看了文档,但没有看到任何以别名发送电子邮件的选项的明确示例。

从共享邮箱、共享日历或作为代理人发送消息时,我们只能将 fromsender 属性设置为不同的值。查看详细信息 here (see form and sender) and Setting the from and sender properties。没有提到以别名发送电子邮件,并且无法根据测试工作。

因此不支持通过 Microsoft Graph API.

发送电子邮件作为别名

fromsender的值必须对应实际使用的邮箱。所以发送电子邮件作为别名的唯一方法是在 O365 管理中心将别名更改为主电子邮件,然后发送电子邮件。

作为解决方法,如果您只是想让收件人认为您是从别名发送的,您可以为您的邮箱配置一个委托邮箱(将邮箱的 sendAs 权限分配给委托用户)。 Delegated mailbox其实就是另外一个邮箱,需要分配一个Exchange Online license。然后将 from 属性 设置为在 Microsoft Graph API 中对您的邮箱具有 sendAs 权限的委派用户。查看详细信息 here。之后,当您发送电子邮件时,收件人会看到它来自委托的电子邮件。

关于如何在 Exchange Admin Center 中分配 sendAs 权限,请参阅 Use the EAC to assign permissions to individual mailboxes。可能需要几个小时才能生效。

POST https://graph.microsoft.com/beta/me/sendMail
{
    "message": {
        "subject": "Meet for lunch?",
        "body": {
            "contentType": "Text",
            "content": "The new cafeteria is open."
        },
        "toRecipients": [{
                "emailAddress": {
                    "address": "user@domain.com"
                }
            }
        ],
        "from": {
            "emailAddress": {
                "address": "{delegated mailbox}"
            }
        }
    }
}