Добавление возможностей электронной почты в скрипты PowerShell с помощью Microsoft Graph

В этой статье описано, как расширить приложение, созданное в разделе Сборка сценариев PowerShell, с помощью Microsoft Graph с помощью API почты Microsoft Graph. Вы используете Microsoft Graph для вывода списка папки "Входящие" пользователя и отправки сообщения электронной почты.

Перечисление папки "Входящие" пользователя

Начните с перечисления сообщений в почтовом ящике пользователя.

  1. В сеансе PowerShell, прошедшем проверку подлинности, убедитесь, что задана $user переменная.

    PS > $user.DisplayName
    Megan Bowen
    
  2. Выполните следующую команду, чтобы получить список папки "Входящие" пользователя.

    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. Просмотрите выходные данные.

    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
    

Описание кода папки "Входящие"

Рассмотрим команду, используемую для вывода списка папки "Входящие" пользователя.

Доступ к известным почтовым папкам

Команда Get-MgUserMailFolderMessage создает запрос к API перечисления сообщений , в частности с помощью конечной GET /users/{user-id}/mailFolders/{folder-id}/messages точки. API возвращает только сообщения в запрошенной папке почты. В этом случае, так как папка "Входящие" является хорошо известной папкой по умолчанию внутри почтового ящика пользователя, она доступна по известному имени: -MailFolderId Inbox. Доступ к папкам без изменений можно получить таким же образом, заменив известное имя свойством идентификатора почтовой папки. Дополнительные сведения о доступных известных именах папок см. в разделе Тип ресурса mailFolder.

Доступ к коллекции

Get-MgUser В отличие от команды из предыдущего раздела, которая возвращает один объект, этот метод возвращает коллекцию сообщений. Большинство API в Microsoft Graph, возвращающих коллекцию, не возвращают все доступные результаты в одном ответе. Вместо этого они используют разбиение на страницы для возврата части результатов, предоставляя метод для клиентов, чтобы запросить следующую страницу.

Размеры страниц по умолчанию

API, использующие разбиение на страницы, реализуют размер страницы по умолчанию. Для сообщений значение по умолчанию — 10. Клиенты могут запрашивать больше (или меньше) с помощью параметра запроса $top . В пакете SDK Для Microsoft Graph PowerShell добавление $top выполняется с помощью -Top 25 параметра .

Примечание.

Значение, передаваемое через -Top , является верхней границей, а не явным числом. API возвращает количество сообщений до указанного значения.

Сортировка коллекций

Функция использует -OrderBy параметр в запросе для запроса результатов, отсортированных по времени получения сообщения (receivedDateTime свойство). Он включает в себя DESC ключевое слово, чтобы сообщения, полученные в последнее время, были перечислены первыми. Этот параметр добавляет параметр запроса $orderby в вызов API.

Отправка почты

Теперь добавьте возможность отправки сообщения электронной почты в качестве пользователя, прошедшего проверку подлинности.

  1. В сеансе PowerShell, прошедшем проверку подлинности, убедитесь, что задана $user переменная.

    PS > $user.DisplayName
    Megan Bowen
    
  2. Используйте следующую команду, чтобы определить объект, представляющий текст запроса для API отправки почты .

    $sendMailParams = @{
        Message = @{
            Subject = "Testing Microsoft Graph"
            Body = @{
                ContentType = "text"
                Content = "Hello world!"
            }
            ToRecipients = @(
                @{
                    EmailAddress = @{
                        Address = ($user.Mail ?? $user.UserPrincipalName)
                    }
                }
            )
        }
    }
    
  3. Используйте следующую команду, чтобы отправить сообщение.

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

    Примечание.

    Если вы тестируете с помощью клиента разработчика из Программы разработчика Microsoft 365, отправленное сообщение электронной почты может не быть доставлено, и вы можете получить отчет о недоставке. Если вы хотите разблокировать отправку почты из клиента, обратитесь в службу поддержки через Центр администрирования Microsoft 365.

  4. Чтобы убедиться, что сообщение получено, повторите Get-MgUserMailFolderMessage команду из предыдущего шага.

Описание кода отправки почты

Рассмотрим команды, используемые для отправки сообщения.

Отправка почты

Команда Send-MgUserMail создает запрос к API отправки почты .

Создание объектов

В отличие от предыдущих вызовов Microsoft Graph, которые считывают только данные, этот вызов создает данные. Чтобы создать элементы с помощью пакета SDK, необходимо создать объект, представляющий текст запроса, задать нужные свойства, а затем передать его в BodyParameter параметре .

Следующее действие