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 Microsoft Graph
- Autorisations de boîtes aux lettres
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.
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 valeurfalse
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
- Pourquoi intégrer le courrier Outlook ?
- Utiliser l’API de messagerie et ses cas d’utilisation dans Microsoft Graph v1.0