Compartir a través de


Adición de funcionalidades de correo electrónico a scripts de PowerShell mediante Microsoft Graph

En este artículo, ampliará la aplicación que creó en Compilación de scripts de PowerShell con Microsoft Graph con las API de correo de Microsoft Graph. Use Microsoft Graph para enumerar la bandeja de entrada del usuario y enviar un correo electrónico.

Bandeja de entrada del usuario de lista

Empiece enumerando los mensajes en la bandeja de entrada de correo electrónico del usuario.

  1. En la sesión de PowerShell autenticada, compruebe que la $user variable está establecida.

    PS > $user.DisplayName
    Megan Bowen
    
  2. Ejecute el siguiente comando para mostrar la bandeja de entrada del usuario.

    Get-MgUserMailFolderMessage -UserId $user.Id -MailFolderId Inbox -Select `
      "from,isRead,receivedDateTime,subject" -OrderBy "receivedDateTime DESC" `
      -Top 25 | Format-Table Subject,@{n='From';e={$_.From.EmailAddress.Name}}, `
      IsRead,ReceivedDateTime
    
  3. Revise la salida.

    Subject                                    From                    IsRead ReceivedDateTime
    -------                                    ----                    ------ ----------------
    Updates from Ask HR and other communities  Contoso Demo on Yammer  False  4/19/2022 10:19:02 PM
    Employee Initiative Thoughts               Patti Fernandez         False  4/19/2022 3:15:56 PM
    Voice Mail (11 seconds)                    Alex Wilber             False  4/18/2022 2:24:16 PM
    Our Spring Blog Update                     Alex Wilber             True   4/18/2022 1:52:03 PM
    Atlanta Flight Reservation                 Alex Wilber             False  4/13/2022 2:30:27 AM
    Atlanta Trip Itinerary - down time         Alex Wilber             False  4/12/2022 4:46:01 PM
    

Código de bandeja de entrada de lista explicado

Considere el comando usado para enumerar la bandeja de entrada del usuario.

Acceso a carpetas de correo conocidas

El Get-MgUserMailFolderMessage comando compila una solicitud a la API List messages , específicamente mediante el punto de GET /users/{user-id}/mailFolders/{folder-id}/messages conexión. La API solo devuelve mensajes en la carpeta de correo solicitada. En este caso, dado que la bandeja de entrada es una carpeta predeterminada y conocida dentro del buzón de un usuario, es accesible a través de su nombre conocido: -MailFolderId Inbox. Se obtiene acceso a las carpetas no predeterminadas de la misma manera, reemplazando el nombre conocido por la propiedad ID de la carpeta de correo. Para obtener más información sobre los nombres de carpeta conocidos disponibles, consulte tipo de recurso mailFolder.

Acceso a una colección

A diferencia del Get-MgUser comando de la sección anterior, que devuelve un único objeto, este método devuelve una colección de mensajes. La mayoría de las API de Microsoft Graph que devuelven una colección no devuelven todos los resultados disponibles en una única respuesta. En su lugar, usan la paginación para devolver una parte de los resultados al tiempo que proporcionan un método para que los clientes soliciten la página siguiente.

Tamaños de página predeterminados

Las API que usan la paginación implementan un tamaño de página predeterminado. En el caso de los mensajes, el valor predeterminado es 10. Los clientes pueden solicitar más (o menos) mediante el parámetro de consulta $top . En el SDK de PowerShell de Microsoft Graph, la adición $top se realiza con el -Top 25 parámetro .

Nota:

El valor pasado a través -Top de es un límite superior, no un número explícito. La API devuelve una serie de mensajes hasta el valor especificado.

Ordenar colecciones

La función usa el -OrderBy parámetro en la solicitud para solicitar resultados ordenados por el momento en que se recibe el mensaje (receivedDateTime propiedad). Incluye la DESC palabra clave para que los mensajes recibidos más recientemente aparezcan primero. Este parámetro agrega el parámetro de consulta $orderby a la llamada API.

Enviar correo

Ahora agregue la capacidad de enviar un mensaje de correo electrónico como usuario autenticado.

  1. En la sesión de PowerShell autenticada, compruebe que la $user variable está establecida.

    PS > $user.DisplayName
    Megan Bowen
    
  2. Use el siguiente comando para definir un objeto que represente el cuerpo de la solicitud para Send mail API.

    $sendMailParams = @{
        Message = @{
            Subject = "Testing Microsoft Graph"
            Body = @{
                ContentType = "text"
                Content = "Hello world!"
            }
            ToRecipients = @(
                @{
                    EmailAddress = @{
                        Address = ($user.Mail ?? $user.UserPrincipalName)
                    }
                }
            )
        }
    }
    
  3. Use el siguiente comando para enviar el mensaje.

    Send-MgUserMail -UserId $user.Id -BodyParameter $sendMailParams
    

    Nota:

    Si va a realizar pruebas con un inquilino para desarrolladores del Programa para desarrolladores de Microsoft 365, es posible que el correo electrónico que envíe no se entregue y que reciba un informe de no entrega. Si desea desbloquear el envío de correo desde el inquilino, póngase en contacto con el soporte técnico a través de la Centro de administración de Microsoft 365.

  4. Para comprobar que se ha recibido el mensaje, repita el Get-MgUserMailFolderMessage comando del paso anterior.

Enviar código de correo explicado

Tenga en cuenta los comandos usados para enviar un mensaje.

Envío de correo

El Send-MgUserMail comando compila una solicitud a Send mail API.

Creación de objetos

A diferencia de las llamadas anteriores a Microsoft Graph que solo leen datos, esta llamada crea datos. Para crear elementos con el SDK, cree un objeto que represente el cuerpo de la solicitud, establezca las propiedades deseadas y, a continuación, páselo en el BodyParameter parámetro .

Paso siguiente