Envoi de messages Outlook à partir d’un autre utilisateur

Exchange Online propose des autorisations de boîte aux lettres qui permettent à un utilisateur d’envoyer des messages qui apparaissent comme étant envoyés par un autre utilisateur, une liste de distribution, un groupe, une ressource ou une boîte aux lettres partagée. Microsoft Graph prend également en charge cette fonctionnalité, mais le résultat final varie en fonction des autorisations précises accordées dans Exchange Online et de l’API utilisée pour envoyer le message.

Autorisations

Deux types d’autorisations s’appliquent à l’envoi de messages à partir d’un autre utilisateur :

Autorisations de Microsoft Graph

Pour envoyer des messages à partir d’un autre utilisateur, les applications qui emploient des jetons utilisateur ont recours à l’autorisation Mail.Send.Shared.

Remarque

Les applications qui utilisent des jetons d’application au lieu de jetons utilisateur et auxquelles un administrateur a octroyé l’autorisation Mail.Send peuvent envoyer des courriers électroniques à partir de n’importe quel utilisateur de l’organisation en envoyant le message normalement via la boîte aux lettres de l’utilisateur.

Autorisations de boîte aux lettres

Les deux autorisations suivantes ont une incidence sur le résultat final de l’envoi d’un message à partir d’un autre utilisateur : Envoyer de la part de et Envoyer en tant que. L’utilisateur qui est connecté à votre application grâce à l’autorisation Mail.Send.Shared doit avoir au moins l’une des autorisations suivantes accordées à la boîte aux lettres, au groupe ou à la liste de distribution dont le message est issu.

Remarque

Il n’est actuellement pas possible d’utiliser Microsoft Graph pour interroger les boîtes aux lettres pour lesquelles l’utilisateur authentifié dispose d’autorisations.

Envoyer de la part de

Avec cette autorisation, le destinataire de l’e-mail a une indication dans son client de messagerie que l’utilisateur de votre application a envoyé le message pour le compte d’un autre utilisateur.

Capture d’écran d’Outlook sur le web indiquant qu’un message a été envoyé par un utilisateur au nom d’un autre

Ceci est exposé dans Microsoft Graph en tant que sender propriétés (l’utilisateur qui a réellement envoyé le message) et from (l’utilisateur, le groupe, ou ainsi de suite, dont le message semble provenir).

{
  "id": "AAMkAGE1...",
  "subject": "Send mail test",
  "sender": {
    "emailAddress": {
      "name": "Adele Vance",
      "address": "AdeleV@contoso.com"
    }
  },
  "from": {
    "emailAddress": {
      "name": "Pradeep Gupta",
      "address": "PradeepG@contoso.com"
    }
  }
}

Un utilisateur peut accorder cette autorisation à un autre utilisateur pour sa propre boîte aux lettres à l’aide d’Outlook. Les administrateurs peuvent accorder cette autorisation pour n’importe quel groupe, boîte aux lettres ou liste de distribution dans le Centre d’administration Microsoft Office 365.

Envoyer en tant que

Avec cette autorisation, aucun indice ne laisse apparaître que le message a été envoyé par un autre utilisateur. Les propriétés sender et from ont la même valeur.

Les utilisateurs ne peuvent pas accorder cette autorisation à leur propre boîte aux lettres. Les administrateurs peuvent accorder cette autorisation dans le Centre d’administration Microsoft 365.

Envoi avec Microsoft Graph

Vous pouvez envoyer un message à partir d’un autre utilisateur soit en l’envoyant directement soit en créant un brouillon, puis en l’envoyant.

Pour envoyer un message à partir d’un autre utilisateur, définissez la propriété from sur le message envoyé à l’adresse de messagerie de l’utilisateur que vous voulez utiliser comme expéditeur. Vous n’avez pas besoin de définir la sender propriété : Microsoft Graph la définit de manière appropriée, en fonction des autorisations de boîte aux lettres accordées à l’utilisateur qui s’est connecté.

Par exemple, pour envoyer un courrier électronique à partir du groupe sales@contoso.com, configurez le message comme suit.

{
  "subject": "January sales report",
  "toRecipients": [
    {
      "emailAddress": {
        "address": "MeganB@contoso.com"
      }
    }
  ],
  "from": {
    "emailAddress": {
      "address": "sales@contoso.com"
    }
  }
}

Comportement Éléments envoyés

Une fois le message envoyé, il peut être enregistré dans le dossier Éléments envoyés de l’utilisateur à l’origine de l’envoi, de l’expéditeur ou des deux. Il peut également ne pas être enregistré du tout.

Remarque

Si le message est envoyé à partir d’une adresse qui ne dispose pas de boîte aux lettres (une liste de distribution, par exemple), il n’existe pas de dossier Éléments envoyés pour l’expéditeur.

  • Si votre application utilise le point de terminaison /me (ou /users/{user-id}, où user-id correspond à l’utilisateur connecté) pour envoyer des messages, le courrier électronique sera enregistré par défaut dans le dossier Éléments envoyés de l’utilisateur à l’origine de l’envoi.
  • Si votre application utilise /users/{user-id}, où user-id correspond à l’expéditeur, pour envoyer des messages, le courrier électronique sera enregistré par défaut dans le dossier Éléments envoyés de l’expéditeur.

    Importante

    Pour utiliser cette méthode, l’expéditeur doit posséder l’autorisation de boîte aux lettres Accès total en plus de l’autorisation Envoyer de la part de ou Envoyer en tant que.

Le comportement par défaut peut être modifié par d’autres facteurs externes :

  • Les administrateurs peuvent mettre à jour la boîte aux lettres de l’expéditeur de sorte qu’elle enregistre toujours une copie des messages envoyés par un délégué dans son dossier Éléments envoyés.
  • Si vous définissez la propriété saveToSentItems sur la valeur false dans une demande d’envoi du message, l’élément n’est pas enregistré dans le dossier Éléments envoyés. Toutefois, si un administrateur a configuré le paramètre « toujours enregistrer une copie », le message sera tout de même enregistré dans le dossier Éléments envoyés de l’expéditeur.

Exemples

Exemple 1 : envoi réussi via un point de terminaison /me

Dans cet exemple, l’autorisation Envoyer de la part de a été octroyée à Adele Vance sur la boîte aux lettres d’Allan Deyoung.

Demande

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"
      }
    }
  }
}

Réponse

HTTP/1.1 202 Accepted

Exemple 2 : échec d’une tentative d’envoi sans autorisation

Dans cet exemple, Adele Vance tente d’envoyer un e-mail de la part de Patti Fernandez, mais ni l’autorisation Envoyer de la part de ni l’autorisation Envoyer en tant que ne lui a été octroyée. La réponse contient une erreur ErrorSendAsDenied.

Demande

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"
      }
    }
  }
}

Réponse

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"
    }
  }
}

Étapes suivantes