由于某种原因,“代表发送”功能对我来说失败了。图始终返回 ErrorSendAsDenied (当From
和Sender
字段值不同时)。
已验证帐户具有正确的配置,以便彼此代表发送。在上面花了三天以上后,我无法使它正常工作。
身份验证期间需要以下权限:
openid
email
profile
offline_access
User.Read
Mail.Read
Mail.ReadWrite
Mail.Read.Shared
Mail.ReadWrite.Shared
Mail.Send
Mail.Send.Shared
对于下面的示例,用户Gregory Test希望代表Sem Test发送消息。有效的授权访问令牌(由Gregory Test验证)用于发送电子邮件,但是电子邮件传递始终失败。
提交的示例JSON消息为:
{
"Message":{
"Subject":"Trying to send message on behalf",
"Body":{
"ContentType":"html",
"Content":" email html content "
},
"From":{
"EmailAddress":{
"Address":"sem.test@contoso.com",
"Name":"Sem Test"
}
},
"Sender":{
"EmailAddress":{
"Address":"gregory.test@contoso.com",
"Name":"Gregory Test"
}
},
"ToRecipients":[
{
"EmailAddress":{
"Address":"semtestestestes@gmail.com",
"Name":"Sem Shehovtsov"
}
}
]
}
}
如果Sender
和From
设置为相同的值,则可以正常工作。 Sender
邮箱被配置为允许代表其他用户发送邮件。
有什么想法吗?
答案 0 :(得分:0)
您不需要设置Sender
属性,Graph将自动为您处理。来自documentation:
要从其他用户发送邮件,请在发送到该用户的电子邮件地址的邮件上设置
from
属性。您不需要设置sender
属性-Microsoft Graph会根据授予登录用户的邮箱权限来适当地设置它。
尝试使用此有效负载:
{
"message":{
"subject": "Trying to send message on behalf",
"body":{
"contentType":"html",
"content":" email html content "
},
"toRecipients":[
{
"emailAddress":{
"address":"semtestestestes@gmail.com",
"name":"Sem Shehovtsov"
}
}
],
"from":{
"emailAddress":{
"address":"sem.test@contoso.com",
"name":"Sem Test"
}
},
}
}
此外,您无需同时请求 Read
和ReadWrite
范围。 ReadWrite
范围与Read
范围重叠。