次の方法で共有


Microsoft Graph を使用して PowerShell スクリプトに電子メール機能を追加する

この記事では、「Microsoft Graph メール API を使用して Microsoft Graph を使用して PowerShell スクリプトをビルド する」で作成したアプリケーションを拡張します。 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 コマンドは、特に GET /users/{user-id}/mailFolders/{folder-id}/messages エンドポイントを使用して、List messages API への要求を作成します。 API は、要求されたメール フォルダー内のメッセージのみを返します。 この場合、受信トレイはユーザーのメールボックス内の既定の既知のフォルダーであるため、既知の名前である -MailFolderId Inboxを使用してアクセスできます。 既定以外のフォルダーには、既知の名前をメール フォルダーの ID プロパティに置き換えることで、同じ方法でアクセスされます。 使用可能な既知のフォルダー名の詳細については、「 mailFolder リソースの種類」を参照してください。

コレクションへのアクセス

1 つのオブジェクトを返す前のセクションの Get-MgUser コマンドとは異なり、このメソッドはメッセージのコレクションを返します。 コレクションを返す Microsoft Graph のほとんどの API では、使用可能なすべての結果が 1 つの応答で返されるわけではありません。 代わりに、 ページングを 使用して結果の一部を返しながら、クライアントが次のページを要求するメソッドを提供します。

既定のページ サイズ

ページングを使用する API では、既定のページ サイズが実装されます。 メッセージの場合、既定値は 10 です。 クライアントは、 $top クエリ パラメーターを使用して、より多く (またはそれ以下) を要求できます。 Microsoft Graph PowerShell SDK では、 $top の追加は -Top 25 パラメーターを使用して実行されます。

注:

-Top経由で渡される値は、明示的な数値ではなく、上限です。 API は、指定した値までのメッセージ数 返します。

コレクションを並べ替える

関数は、要求で -OrderBy パラメーターを使用して、メッセージの受信時刻 (receivedDateTime プロパティ) で並べ替えられた結果を要求します。 最近受信したメッセージが最初に一覧表示されるように、DESC キーワード (keyword)が含まれます。 このパラメーターは、 $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 パラメーターで渡します。

次の手順