# ===== パラメーター ===== # Usage: # .\msgsendbygrahapi.ps1 -msgsubj "TITLE" -msgbody "BODY" -msgto "toaddr@dummy.test" # .\msgsendbygrahapi.ps1 "TITLE" "BODY" "toaddr@dummy.test" # .\msgsendbygrahapi.ps1 "TITLE" "BODY" param ( [string]$msgsubj = "[Graph API] メッセージのタイトルです", [string]$msgbody = "[Graph API] メッセージの本文です。", #既定の宛先メールアドレス [string]$msgto = "toaddr@dummy.test" ) # ===== テナントとメールアドレスの設定 ===== $TenantId = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" $ClientId = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" $ClientSecret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" $from = "yourmailbox@dummy.test" $to = $msgto #$cc = "ccaddr1@dummy.test","ccaddr2@dummy.test" $cc = "" # ===== トークン取得 ===== $tokenBody = @{ grant_type = "client_credentials" scope = "https://graph.microsoft.com/.default" client_id = $clientId client_secret = $clientSecret } $tokenResponse = Invoke-RestMethod ` -Method Post ` -Uri "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token" ` -Body $tokenBody $accessToken = $tokenResponse.access_token # ===== メール作成 ===== $message = @{ subject = $msgsubj body = @{ contentType = "Text" content = $msgbody } toRecipients = @( @{ emailAddress = @{ address = $to } } ) from = @{ emailAddress = @{ address = $from } } } if($cc) { if($cc.Count -gt 1) { $ccRecipients = foreach ($c in $cc) { @{ emailAddress = @{ address = $c } } } } else { $ccRecipients = @( @{ emailAddress = @{ address = $cc } } ) } $message.ccRecipients = $ccRecipients } $mailBody = @{ message = $message saveToSentItems = $true } | ConvertTo-Json -Depth 5 # ===== 文字化け対策 ===== $mailBody = [System.Text.Encoding]::UTF8.GetBytes($mailBody ) # ===== 送信 ===== $uri = "https://graph.microsoft.com/v1.0/users/$from/sendMail" $headers = @{ Authorization = "Bearer $accessToken" "Content-Type" = "application/json" } Invoke-RestMethod -Method Post -Uri $uri -Headers $headers -Body $mailBody Write-Host "メール送信完了"