Enviar mensagens do Outlook de outro usuário
Exchange Online fornece permissões de caixa de correio que permitem um usuário enviar o email que parece ter sido enviado de outro usuário, a lista de distribuição, grupo, recurso ou caixa de correio compartilhada. O Microsoft Graph também dá suporte a este recurso, mas o resultado final varia dependendo das permissões exatas concedidas no Exchange Online e que API você usa para enviar o email.
Permissões
Dois tipos de permissões são aplicáveis para enviar mensagens de outro usuário:
- Permissões do Microsoft Graph
- Permissões da caixa de correio
Permissões do Microsoft Graph
Para enviar mensagens de outro usuário, aplicativos que usam tokens de usuário, use a permissão Mail.Send.Shared.
Observação
Os aplicativos que usam tokens de aplicativo em vez de tokens de usuário e tem a permissão Mail.Send consentida por um administrador, pode enviar emails, como qualquer usuário na organização enviando o email normalmente através da caixa de correio do usuário.
Permissões de caixa de correio
Duas permissões afetam o resultado final de enviar uma mensagem de outro usuário: enviar em nome e enviar como. O usuário que entra no aplicativo com a permissão Mail.Send.Shared DEVE ter pelo menos uma destas permissões que foram concedidas para a caixa de correio, grupo ou lista de distribuição de onde o email é.
Observação
No momento, não é possível usar o Microsoft Graph para consultar para quais caixas de correio o usuário autenticado tem permissões.
Enviar em Nome de
Com essa permissão, o destinatário do email tem uma indicação em seu cliente de email de que o usuário do seu aplicativo enviou a mensagem em nome de outro usuário.
Isso é exposto no Microsoft Graph como as sender
propriedades (o usuário que realmente enviou a mensagem) e from
(o usuário, o grupo ou assim por diante, que a mensagem parece ser de) propriedades.
{
"id": "AAMkAGE1...",
"subject": "Send mail test",
"sender": {
"emailAddress": {
"name": "Adele Vance",
"address": "AdeleV@contoso.com"
}
},
"from": {
"emailAddress": {
"name": "Pradeep Gupta",
"address": "PradeepG@contoso.com"
}
}
}
Um usuário pode conceder permissão para suas caixas de correio a outro usuário, usando o Outlook. Os administradores podem conceder permissão para qualquer lista de distribuição, grupo ou caixa de correio no Centro de administração do Microsoft 365.
Enviar como
Com essa permissão, não há nenhuma indicação de que a mensagem foi enviada como um usuário diferente. As propriedades sender
e from
têm o mesmo valor.
Os usuários não podem conceder essa permissão para suas caixas de correio. Os administradores podem conceder essa permissão no Centro de administração do Microsoft 365.
Enviar com o Microsoft Graph
Você pode enviar mensagens de outro usuário seja enviar diretamente ou criar um rascunho e, em seguida, enviá-lo.
Para enviar de outro usuário, defina a from
propriedade em mensagem enviada ao endereço de email do usuário para enviar de. Você não precisa definir a propriedade – o Microsoft Graph a sender
define adequadamente, com base nas permissões de caixa de correio concedidas ao usuário que entrou.
Por exemplo, para enviar emails do grupo sales@contoso.com
, configure a mensagem da seguinte maneira.
{
"subject": "January sales report",
"toRecipients": [
{
"emailAddress": {
"address": "MeganB@contoso.com"
}
}
],
"from": {
"emailAddress": {
"address": "sales@contoso.com"
}
}
}
Comportamento de itens enviado
Depois que a mensagem é enviada, pode ser salva em pastas de itens enviados do usuário de envio, a sua pasta Itens enviados do usuário ou ambas. Ele também não pode ser salvo de forma alguma.
Observação
Se a mensagem é enviada de um endereço que não tenha uma caixa de correio (uma lista de distribuição, por exemplo), não há nenhuma item enviados para o usuário.
- Se o aplicativo enviar usando o
/me
ponto de extremidade (ou/users/{user-id}
onde auser-id
corresponde ao usuário conectado), por padrão, a mensagem será salva na pasta Itens enviados de envio do usuário. - Se o aplicativo enviar usando o
/users/{user-id}
onde auser-id
corresponde à de usuário, por padrão, a mensagem será salva na da pasta Itens enviados do usuário.Importante
Para enviar dessa maneira, o usuário de envio deve ter a permissão de caixa de correio acesso total, além de uma permissão enviar em nome ou enviar como.
O comportamento padrão pode ser alterado por outros fatores externos:
- Os administradores podem atualizar na caixa de correio do usuário para sempre salvar uma cópia das mensagens enviadas de um representante para seus itens enviados.
- Configurando a
saveToSentItems
propriedade parafalse
em um solicitação enviar email, você pode impedir o item de ser salvo na pasta Itens enviados. No entanto, se o administrador definiu a configuração "sempre salvar uma cópia", a mensagem será ainda salva a partir dos itens enviados do usuário.
Exemplos
Exemplo 1: Envio bem-sucedido pelo ponto de extremidade /me
Neste exemplo, Adele Vance recebeu a permissão enviar em nome para a caixa de correio de Allan Deyoung.
Solicitação
POST /me/sendmail
Content-Type: application/json
{
"message": {
"subject": "Expense reports",
"body": {
"contentType": "text",
"content": "Have you submitted your expense reports yet?"
},
"toRecipients": [
{
"emailAddress": {
"address": "MeganB@contoso.com"
}
}
],
"from": {
"emailAddress": {
"address": "AllanD@contoso.com"
}
}
}
}
Resposta
HTTP/1.1 202 Accepted
Exemplo 2: Falha na tentativa de enviar sem permissões
Neste exemplo, Adele Vance tenta enviar um email de Patti Fernandez, mas não recebeu uma permissão enviar em nome ou enviar como. A resposta contém um ErrorSendAsDenied
erro.
Solicitação
POST /me/sendmail
Content-Type: application/json
{
"message": {
"subject": "Support ticket",
"body": {
"contentType": "text",
"content": "I noticed you opened a support ticket yesterday..."
},
"toRecipients": [
{
"emailAddress": {
"address": "MeganB@contoso.com"
}
}
],
"from": {
"emailAddress": {
"address": "PattiF@contoso.com"
}
}
}
}
Resposta
HTTP/1.1 403 Forbidden
Content-Type: application/json
{
"error": {
"code": "ErrorSendAsDenied",
"message": "The user account which was used to submit this request does not have the right to send mail on behalf of the specified sending account. Cannot submit message.",
"innerError": {
"request-id": "24e7991e-01ae-4cc2-8e06-532a96fd8948",
"date": "2019-01-16T18:53:25"
}
}
}
Próximas etapas
- Por que integrar-se com o email do Outlook
- Como usar a API de email e seus casos de uso do Microsoft Graph versão 1.0.