Enviar Mensajes de Outlook desde otro usuario
Exchange Online proporciona permisos de buzón que permiten a un usuario enviar correo electrónico que parece enviado desde la dirección de otro usuario, una lista de distribución, un grupo, un recurso o un buzón compartido. Microsoft Graph también es compatible con esta característica, pero el resultado final varía según los permisos exactos en Exchange Online y la API que se usa para enviar el mensaje.
Permisos
Se aplican dos tipos de permisos al envío de mensajes de otro usuario:
- Permisos de Microsoft Graph
- Permisos de buzones de correo
Permisos de Microsoft Graph
Para enviar mensajes de otro usuario, las aplicaciones que utilizan los tokens de usuario usan el permiso Mail.Send.Shared.
Nota:
Las aplicaciones que utilizan los tokens de aplicación en lugar de los tokens de usuario y tienen aceptado el permiso Mail.Send por parte de un administrador pueden enviar correo como cualquier usuario de la organización; lo hacen enviando correo de la forma habitual, a través del buzón del usuario.
Permisos de buzones de correo
Dos permisos afectan el resultado final de enviar un mensaje de otro usuario: Enviar en nombre de y Enviar como. El usuario que ha iniciado sesión en la aplicación con el permiso Mail.Send.Shared DEBE tener, al menos, uno de estos permisos concedido al buzón, grupo o lista de distribución del que procede el correo.
Nota:
Actualmente no es posible usar Microsoft Graph para consultar para qué buzones tiene permisos el usuario autenticado.
Enviar en nombre de
Con este permiso, el destinatario del correo electrónico tiene una indicación en su cliente de correo electrónico de que el usuario de la aplicación envió el mensaje en nombre de otro usuario.
Esto se expone en Microsoft Graph como las sender
propiedades (el usuario que realmente envió el mensaje) y from
(el usuario, el grupo, etc., que el mensaje parece ser de).
{
"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 usuario puede conceder permiso a otro para usar su buzón con Outlook. Los administradores pueden conceder este permiso para cualquier lista de distribución, grupo o buzón en el Centro de administración de Microsoft 365.
Enviar como
Con este permiso, no hay ninguna indicación de que se envió el mensaje como un usuario diferente. Las propiedades sender
y from
tienen el mismo valor.
Los usuarios no pueden conceder este permiso a sus buzones. Los administradores pueden conceder este permiso en el Centro de administración de Microsoft 365.
Envíos con Microsoft Graph
Puede enviar mensajes de otro usuario enviándolo directamente o creando un borrador y enviándolo después.
Para enviar correo de otro usuario, configure la propiedad from
en el mensaje enviado a la dirección de correo electrónico del usuario como enviar desde. No es necesario establecer la sender
propiedad: Microsoft Graph la establece correctamente, en función de los permisos de buzón concedidos al usuario que ha iniciado sesión.
Por ejemplo, para enviar correo desde el grupo sales@contoso.com
, configure el mensaje como se muestra a continuación.
{
"subject": "January sales report",
"toRecipients": [
{
"emailAddress": {
"address": "MeganB@contoso.com"
}
}
],
"from": {
"emailAddress": {
"address": "sales@contoso.com"
}
}
}
Comportamiento de elementos enviados
Después de enviar el mensaje, se puede guardar en la carpeta Elementos enviados del usuario que realmente lo envió, en la carpeta Elementos enviados de usuario que aparece como remitente o en ambas. También es posible no guardarlo en absoluto.
Nota:
Si el mensaje se envió desde una dirección que no tiene un buzón de correo (por ejemplo, una lista de distribución), no hay Elementos enviados para el usuario que aparece como remitente.
- Si se envía la aplicación con el punto de conexión
/me
(o/users/{user-id}
, donde eluser-id
corresponde al usuario que ha iniciado sesión), de forma predeterminada, el mensaje se guardará en la carpeta Elementos enviados del usuario que envía el correo. - Si se envía la aplicación con
/users/{user-id}
, dondeuser-id
corresponde al usuario que aparece como remitente, de forma predeterminada, el mensaje se guardará en la carpeta Elementos enviados del usuario que aparece como remitente.Importante
Para enviar correos de este modo, el usuario que envía debe tener el permiso de buzón Acceso completo, además de uno de los permisos Enviar en nombre de o Enviar como.
El comportamiento predeterminado puede cambiar en función de otros factores externos:
- Los administradores pueden actualizar el buzón del usuario que aparece como remitente para guardar siempre una copia de los mensajes enviados desde un delegado en sus Elementos enviados.
- Al configurar la propiedad
saveToSentItems
con el valorfalse
en una solicitud enviar correo, puede impedir que el elemento se guarde en la carpeta Elementos enviados. Sin embargo, si un administrador ha configurado la opción "guardar siempre una copia", el mensaje se seguirá guardando en los Elementos enviados del usuario que aparece como remitente.
Ejemplos
Ejemplo 1: enviar correctamente a través del punto de conexión /me
En este ejemplo, se ha concedido a Marta Galván el permisoEnviar en nombre de para acceder al buzón de Nerea Núñez.
Solicitud
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"
}
}
}
}
Respuesta
HTTP/1.1 202 Accepted
Ejemplo 2: intento fallido de enviar sin permisos
En este ejemplo, Marta Galván intenta enviar un correo electrónico como Edurne Chávez, pero no se le han concedido los permisos Enviar en nombre de o Enviar como. La respuesta contiene un error ErrorSendAsDenied
.
Solicitud
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"
}
}
}
}
Respuesta
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"
}
}
}
Pasos siguientes
- ¿Por qué integrar con el correo de Outlook?
- Usar la API de correo y sus casos de uso en Microsoft Graph v1.0.