> For the complete documentation index, see [llms.txt](https://docs.realmjoin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.realmjoin.com/ja/dev-reference/report-functions/send-rjrbreportemail.md).

# Send-RjRbReportEmail

## 概要

`Send-RjRbReportEmail` RealmJoin レポート ランブックからレポートメールを配信するための標準ヘルパーです。Markdown コンテンツを受け取り、RealmJoin ブランドのレスポンシブ HTML メールに変換し、任意のファイルとインライン ブランドグラフィック（ヘッダー/フッター）を添付して、Microsoft Graph `sendMail` エンドポイント経由で結果を送信します。

> **このリリースで名称が変更されました。** この関数は次の名前から変更されました `Send-RjReportEmail` から `Send-RjRbReportEmail` モジュール内のほかの部分との命名一貫性を保つため、次の名前に変更されました（`*-RjRb*`）。古い名前 `Send-RjReportEmail` は後方互換性のあるエイリアスとしてエクスポートされているため、既存のランブックは変更なしで引き続き動作します。ただし、新しいランブックでは次を呼び出す必要があります `Send-RjRbReportEmail`.

主な特性:

* **Markdown 入力、HTML 出力** — ランブックはレポート本文を Markdown で構成し、この関数は Outlook Classic、New Outlook、Outlook Web、モバイルクライアント、ダークモードで動作するテーマ付き HTML にレンダリングします。
* **受信者ごとに 1 通のメール** — 複数の受信者が指定された場合、関数は単一の複数受信者メールではなく、各アドレスに個別のメッセージを送信します。これはプライバシーを考慮した、既定で BCC とする設計です。
* **インラインのブランド付きヘッダーとフッター** — 同梱の PNG アセットは CID 添付ファイルとして送信され、埋め込み HTML から参照されます。どちらも上書きでき、完全に非表示にすることもできます。
* **自動接続** — Graph セッションがアクティブでない場合、関数は透過的に次を呼び出します `Connect-RjRbGraph` （または `Connect-MgGraph -Identity` 次の場合 `-UseNativeGraphRequest` が設定されている場合）。
* **堅牢性** — 添付ファイルの読み取り失敗、画像上書きの欠落、または受信者ごとの sendMail 失敗は報告されますが、 *すべての* 受信者への送信が失敗しない限り、バッチ全体は中断されません。

一元管理されたメール設定（送信者アドレス、サービスデスク情報）は次に記載されています [ランブック レポート設定](/ja/zi-dong-hua/runbooks/runbook-report-settings.md) — このドキュメントでは、ランブックから関数を呼び出すことに焦点を当てます。

## 前提条件

### 送信者メールボックス

ライセンス済みの Microsoft 365 メールボックス（通常は次のような専用共有メールボックス `realmjoin-report@contoso.com`）が、 `差出人` アドレスとして必要です。Automation Account のマネージド ID には、Graph の `Mail.Send` アプリケーション権限を通じて、そのメールボックスの代理送信を許可する必要があります（ID を単一メールボックスに制限する場合は、Applications 向け RBAC でスコープ設定します）。

### Graph 権限

| シナリオ                              | 必要な権限                                          |
| --------------------------------- | ---------------------------------------------- |
| 既定（`Invoke-RjRbRestMethodGraph`)  | `Mail.Send` （Application）、送信者メールボックス上          |
| 次を使用する場合 `-UseNativeGraphRequest` | 同じです — 呼び出しは引き続き次に到達します `/users/{id}/sendMail` |

### モジュールの接続性

既定では、この関数は `Invoke-RjRbRestMethodGraph` をこのモジュールから使用します。アクティブな接続がない場合は、次を使用して自動接続します `Connect-RjRbGraph`。次の場合 `-UseNativeGraphRequest` が設定されている場合、関数は代わりに次を確認します `Get-MgContext` および次を呼び出します `Connect-MgGraph -Identity -NoWelcome` を必要に応じて呼び出します。

## クイック スタート

最小限の呼び出しに必要なのは、送信者、受信者、件名、Markdown 本文のみです:

```powershell
Send-RjRbReportEmail `
    -EmailFrom "realmjoin-report@contoso.com" `
    -EmailTo   "alice@contoso.com" `
    -Subject   "週次レポート" `
    -MarkdownContent @"
# 週次レポート

こんにちは、Alice さん。

今週の数値は以下のとおりです:

- 新規登録デバイス: **42**
- ライセンス準拠率: **98%**
"@
```

これにより、既定のヘッダーとフッター、ライト/ダークモードのサポート、フッター内の Tenant/バージョン ブロックを備えた、完全にブランド化された RealmJoin メールが作成されます。

## パラメーター

### 必須

| パラメーター            | 型        | 説明                                                                           |
| ----------------- | -------- | ---------------------------------------------------------------------------- |
| `EmailFrom`       | `string` | 送信者メールボックスのユーザー プリンシパル名またはオブジェクト ID。次として使用されます `/users/{id}/sendMail`.       |
| `EmailTo`         | `string` | 受信者アドレス。 **単一文字列** — 複数のアドレスはコンマ区切りリストとして渡します。詳細は以下を参照してください。                |
| `Subject`         | `string` | 件名。HTML の `<title>` 要素にも挿入されます。                                              |
| `MarkdownContent` | `string` | Markdown 形式のレポート本文。対応する構文については [Markdown サポート](#markdown-support) を参照してください。 |

### 任意 — コンテンツ

| パラメーター              | 型          | 既定値     | 説明                                                                                                               |
| ------------------- | ---------- | ------- | ---------------------------------------------------------------------------------------------------------------- |
| `Attachments`       | `string[]` | `@()`   | 添付するローカル ファイル パス。見つからないファイルはログに記録されてスキップされ、読み取り不能なファイルは警告を出しますが送信は中断されません。MIME タイプはファイル拡張子から取得されます。              |
| `saveToSentItems`   | `bool`     | `$true` | この値が設定されている場合、 `$true` 送信済みメッセージは送信者メールボックスの *送信済みアイテム*に保持されます。 `$false` を設定すると、大量レポートでメールボックスがいっぱいになることを回避できます。 |
| `TenantDisplayName` | `string`   | —       | コンテンツ領域の末尾に埋め込まれる Tenant 情報ボックスに表示されます。                                                                          |
| `ReportVersion`     | `string`   | —       | Tenant 情報ボックスに表示されます（セマンティック バージョン文字列、ビルド番号、またはランブック名 + 日付を使用します）。                                               |

### 任意 — ブランディング

| パラメーター        | 型        | 既定値                         | 説明                                                                                                                                                                              |
| ------------- | -------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `HeaderImage` | `string` | 同梱 `Assets/Header.png`      | 既定のヘッダー グラフィックを上書きする PNG/JPG/GIF のローカル ファイル パス。 **ランブックは事前に URL/blob をローカル ファイルに解決する必要があります** （例:  `Get-AzStorageBlobContent`経由）。見つからない、または読み取り不能な上書きは、同梱の既定値にフォールバックし、警告を出します。 |
| `FooterImage` | `string` | 同梱 `Assets/Footer.png`      | と同じ処理です `HeaderImage`。フッターは単一のクリック可能な画像としてレンダリングされます。ブランド テキスト、ロゴ、URL はすべて PNG に埋め込む必要があります。                                                                                    |
| `FooterLink`  | `string` | `https://www.realmjoin.com` | 次として使用される URL `href` および `title` は、フッター画像を囲むアンカーの属性です。                                                                                                                          |
| `NoHeader`    | `switch` | オフ                          | ヘッダー グラフィックを完全に非表示にします。次と組み合わせた場合 `HeaderImage`、警告が出力され、上書きは無視されます。                                                                                                             |
| `NoFooter`    | `switch` | オフ                          | フッター グラフィックとそのリンクを完全に非表示にします。次と組み合わせた場合 `FooterImage` またはカスタムの `FooterLink`、警告が出力され、それらの値は無視されます。                                                                               |

**推奨画像サイズ:** 750 × 200 px の PNG。このサイズはメール コンテナーの幅および同梱の既定値に一致します。アスペクト比が大きく異なると、狭いビューポートでは歪んで見える場合があります。各グラフィックは 3 MB を大幅に下回るサイズにしてください。Graph は合計 `sendMail` リクエストを 4 MB に制限しており、いずれかの画像が 3 MB を超えると警告が出力されます。

### 任意 — 転送

| パラメーター                  | 型        | 既定値 | 説明                                                                                                                                                                                                      |
| ----------------------- | -------- | --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `UseNativeGraphRequest` | `switch` | オフ  | 次を使用して送信します `Invoke-MgGraphRequest` （必要なもの:  `Microsoft.Graph` モジュールおよび `Connect-MgGraph` セッション）であり、次の代わりに使用します `Invoke-RjRbRestMethodGraph`。ランブックが RealmJoin ラッパーではなくネイティブ SDK を中心に構築されている場合に使用してください。 |

## 使用例

### 複数の受信者

`EmailTo` は、1 つ以上のコンマ区切りアドレスを含む単一の文字列を受け入れます。各アドレスはトリミングされ、空のエントリは削除され、 **受信者ごとに 1 通の個別メールが送信されます** — 受信者は互いを確認できません。

```powershell
Send-RjRbReportEmail `
    -EmailFrom "realmjoin-report@contoso.com" `
    -EmailTo   "alice@contoso.com, bob@contoso.com, team-lead@contoso.com" `
    -Subject   "月次インベントリ" `
    -MarkdownContent $reportMd
```

### 添付ファイルと Tenant メタデータを使用する場合

```powershell
$csvPath = Join-Path $env:TEMP 'devices.csv'
$exportData | Export-Csv -Path $csvPath -NoTypeInformation -Encoding UTF8

Send-RjRbReportEmail `
    -EmailFrom         "realmjoin-report@contoso.com" `
    -EmailTo           "it-reports@contoso.com" `
    -Subject           "デバイス インベントリ — $(Get-Date -Format 'yyyy-MM-dd')" `
    -MarkdownContent   $reportMd `
    -Attachments       @($csvPath, "$env:TEMP\summary.xlsx") `
    -TenantDisplayName "Contoso Ltd" `
    -ReportVersion     "DeviceInventory v1.4.2"
```

添付ファイルは、メッセージへの実際の添付に加え、メール本文の下部にある「添付ファイル」ボックスに一覧表示されます。

### カスタムのヘッダー/フッター ブランディング

まずアセットをローカル パスにダウンロードしてから、結果のパスを渡すことで独自のブランディングを使用できます。この関数自体は URL を取得しません。

```powershell
# Azure Blob Storage からランブックの一時フォルダーへブランディング アセットを解決
$headerPath = Join-Path $env:TEMP 'contoso-header.png'
$footerPath = Join-Path $env:TEMP 'contoso-footer.png'

Get-AzStorageBlobContent -Container 'branding' -Blob 'header.png' -Destination $headerPath -Force | Out-Null
Get-AzStorageBlobContent -Container 'branding' -Blob 'footer.png' -Destination $footerPath -Force | Out-Null

Send-RjRbReportEmail `
    -EmailFrom        "realmjoin-report@contoso.com" `
    -EmailTo          "alice@contoso.com" `
    -Subject          "ブランド付きレポート" `
    -MarkdownContent  $reportMd `
    -HeaderImage      $headerPath `
    -FooterImage      $footerPath `
    -FooterLink       "https://intranet.contoso.com/it-reports"
```

この値が設定されている場合、 `$headerPath` が見つからない、または読み取り不能であっても、呼び出しは成功します。同梱の RealmJoin 既定値が使用され、警告がログに記録されます。

### プレーン コンテンツ（ヘッダー/フッターなし）

マーケティング メールのように見せるべきでないアラート形式の通知の場合:

```powershell
Send-RjRbReportEmail `
    -EmailFrom       "realmjoin-report@contoso.com" `
    -EmailTo         "oncall@contoso.com" `
    -Subject         "[ALERT] ライセンスしきい値を超過" `
    -MarkdownContent "## ライセンスしきい値を超過`n`n詳細はダッシュボードを参照してください。" `
    -NoHeader `
    -NoFooter
```

### ネイティブ Microsoft.Graph SDK の使用

ランブックがすでに次を介して認証されており `Connect-MgGraph` （マネージド ID）、RealmJoin ラッパーを混在させたくない場合:

```powershell
Connect-MgGraph -Identity -NoWelcome

Send-RjRbReportEmail `
    -EmailFrom             "realmjoin-report@contoso.com" `
    -EmailTo               "alice@contoso.com" `
    -Subject               "ネイティブ Graph 送信" `
    -MarkdownContent       $reportMd `
    -UseNativeGraphRequest
```

### ファイルからのレポート本文の読み取り

より大きなレポートの場合は、Markdown を `.md` ファイルに生成して読み込みます:

```powershell
$reportMd = Get-Content -Path .\generated-report.md -Raw

Send-RjRbReportEmail `
    -EmailFrom       "realmjoin-report@contoso.com" `
    -EmailTo         "alice@contoso.com" `
    -Subject         "週次レポート" `
    -MarkdownContent $reportMd
```

### アクション ボタン（行動喚起）

次を付加することで、1 つ以上のブランド付きボタンをレンダリングします `{button}` を Markdown リンクに追加します。同じ行に配置されたボタンは 1 行にグループ化されます:

```powershell
$reportMd = @"
# アクセス要求

新しいデバイス アクセス要求が、あなたの判断を待っています。

[承認](https://portal.contoso.com/approve/123){button} [拒否](https://portal.contoso.com/reject/123){button}
"@

Send-RjRbReportEmail `
    -EmailFrom       "realmjoin-report@contoso.com" `
    -EmailTo         "approver@contoso.com" `
    -Subject         "要対応: デバイス アクセス要求" `
    -MarkdownContent $reportMd
```

各ボタンは CTA としてスタイル設定された通常のハイパーリンクです。すべてのクライアントで安全に動作し、最新クライアントでは角丸、Outlook Classic では角丸なしで表示されます。

## Markdown サポート

この関数には、軽量の組み込み Markdown → HTML コンバーターが含まれています。 **外部 Markdown モジュールは必要ありません。** 対応する構文:

| Markdown                                      | 注記                                                                                                                                                                                                  |
| --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `# … ######` 見出し                              | 6 レベルすべて。後ろのスペース `#` は任意です。 `h1` には下線が付きます。間隔は Outlook 向けに調整されています。                                                                                                                                 |
| `**太字**`, `*斜体*`, `~~取り消し線~~`                 | インライン専用（複数行にまたがることはできません）。                                                                                                                                                                          |
| `` `インライン コード` ``                             | 次としてレンダリングされます `<code>` （薄い灰色の背景付き）。                                                                                                                                                                |
| lang ... のコードフェンス ブロック                        | 言語タグは次として保持されます `class="language-…"`。不正な単一バッククォートのフェンスも許容します。                                                                                                                                       |
| `[text](url)` リンク                             | 新しいタブで開きます（ `noopener noreferrer`.                                                                                                                                                                  |
| `[label](url){button}` リンク ボタン                | 通常のリンクではなく、ブランド付きオレンジ色の行動喚起ボタンとしてレンダリングされます。複数の `{button}` リンクが **同じ行にある場合** は、1 行に横並びでレンダリングされます（幅は均等に分割されます）。最新クライアント（New Outlook、OWA、モバイル）では角丸が表示され、Outlook Classic（Word エンジン）では角丸なしでレンダリングされます。 |
| `![alt](url)` 画像                              | 次として挿入されます `<img>` （インライン添付の機能はありません — URL はメール クライアントから到達可能である必要があります）。                                                                                                                            |
| `- 項目` / `1. 項目` リスト                          | ネストしたリストは、レベルごとに 2 スペースのインデントでサポートされます。順序付きと順序なしを混在させると、前のリストは閉じられます。                                                                                                                               |
| 複数行のリスト項目                                     | 次の直下にあるインデントされた空でない行 `<li>` は、次を使用して同じ項目に折りたたまれます `<br>` ソフト改行 — 各項目を 1 行に収める必要はありません。                                                                                                              |
| `- [ ]` / `- [x]` タスク リスト                     | 次としてレンダリングされます `☐` / `☑` Unicode グリフ（チェック済みの場合は緑色）。 `<input type="checkbox">` は、Outlook Classic がフォーム コントロールを削除するため、意図的に使用していません。大文字の `[X]` もチェック済みとして扱われます。                                        |
| `> 引用ブロック`                                    | 色付きの左境界線と網掛け背景でレンダリングされます。                                                                                                                                                                          |
| `> [!NOTE\|TIP\|IMPORTANT\|WARNING\|CAUTION]` | GitHub スタイルの注意書き。引用ブロックの最初の行はマーカー（単独）で、残りの `>`- 接頭辞付き行が本文です。各タイプには固有のアクセント色、グリフ、タイトル バーがあります。                                                                                                       |
| `---`, `***`, `___`                           | 水平線。                                                                                                                                                                                                |
| `\|列\|列\|` テーブル                               | 標準のパイプ テーブル（ `:---`, `:---:`, `---:` 配置指定子付き）。ヘッダー行と区切り行が必要です。                                                                                                                                      |
| `\\` エスケープ                                    | `\*`, `\|` などが使用できるため、リテラルの Markdown 文字を出力できます。                                                                                                                                                     |

脚注、定義リスト、HTML のパススルーなどの非対応項目があります。Markdown は上記の表に記載された範囲に留めてください。

## 動作とエラー処理

### 受信者の解析

`EmailTo` はコンマで分割され、各エントリはトリミングされ、空のエントリは削除されます。結果のリストが空の場合、関数は次をスローします `EmailTo パラメーターに有効なメール受信者が見つかりません。` これは Graph 呼び出しを行う前に発生します。

### 受信者ごとの失敗

各受信者には個別に送信されます。関数は成功と失敗を追跡します:

* この値が設定されている場合、 **少なくとも1件の** 送信が成功しても他が失敗した場合、失敗したアドレスを一覧表示する警告が出力されます。関数は通常どおり戻ります。
* この値が設定されている場合、 **すべての** 送信が失敗した場合、関数はスローします `すべての受信者へのメール送信に失敗しました: …` そのため、Runbook は明確に失敗します。

### 添付ファイルの失敗

* 存在しないファイル（パスが存在しない）— 詳細ログに記録され、通知なくスキップされます。
* 存在するが読み取り不能なファイル（ロック中、アクセス許可が拒否されたファイル）— 警告が出力され、スキップされますが、残りの呼び出しは続行されます。
* メール下部の「添付ファイル」ボックスには、正常に読み取られた添付ファイルのみが一覧表示されます。

### 画像オーバーライドの失敗

両方 `HeaderImage` および `FooterImage` エラー（ファイル不足、サポートされていない拡張子、IO エラー）が発生した場合は、バンドルされた既定値にフォールバックします。警告には失敗の内容と使用された既定値が記載されます。

### 合計サイズ制限

Graph の上限 `sendMail` リクエストは合計約4 MB（HTML 本文 + すべての添付ファイル、base64 エンコード済み）に制限されます。いずれかのブランド画像が3 MBを超えると、関数は警告を出力します。合計ペイロードが依然として4 MBを超える場合、Graph 呼び出し自体が失敗します。次を検討してください:

* 代わりに大きなデータを Storage Account チャネルにアップロードする — 以下を参照 [ランブック レポート設定](/ja/zi-dong-hua/runbooks/runbook-report-settings.md#storage-account-delivery).
* 添付ファイルを埋め込むのではなく、外部でホストされている添付ファイルにリンクする。
* 表形式データを圧縮する（`Compress-Archive`）してから添付する。

## Runbook Report Settings との統合

レポート Runbook は通常、送信者アドレスをハードコーディングするのではなく、中央の RealmJoin カスタマイズ JSON から解決します。関連する設定は次に記載されています [ランブック レポート設定](/ja/zi-dong-hua/runbooks/runbook-report-settings.md)。Runbook での一般的な解決パターンは次のようになります:

```powershell
# 中央管理された設定を読み取る（Runbook フレームワークによって解決される）
$emailFrom = (Get-RjRbDefaultValue -Name 'EmailSender' -Section 'RJReport')

if (-not $emailFrom) {
    throw "EmailSender が構成されていません。セットアップ手順については https://docs.realmjoin.com/ を参照してください。"
}

Send-RjRbReportEmail `
    -EmailFrom       $emailFrom `
    -EmailTo         $RecipientParameter `
    -Subject         $Subject `
    -MarkdownContent $reportMd `
    -TenantDisplayName $TenantDisplayName `
    -ReportVersion     "MyReport v1.0"
```

## 出力

関数は成功時には何も返しません。すべての進行状況は次を介して書き込まれます `Write-RjRbLog -Verbose` （Runbook を次のオプション付きで実行した場合に表示されます `-Verbose` または `$VerbosePreference = 'Continue'`）。警告は次を通じて強制的に出力されます `$WarningPreference = 'Continue'` 呼び出し側でのオーバーライドに関係なく、Azure Automation のジョブ ストリームに確実に表示されます。

## 関連するエクスポート済みヘルパー

次の背後にある構成要素 `Send-RjRbReportEmail` もモジュールからエクスポートされるようになったため、Runbook では送信せずに HTML を組み立てたりプレビューしたりできます:

| 関数                               | 目的                                                                                                         |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| `ConvertFrom-RjRbMarkdownToHtml` | スタンドアロンの Markdown → HTML コンバーター（内部で使用されるものと同じ軽量エンジンで、次を含みます `{button}` 構文）。                                |
| `Get-RjRbReportEmailBody`        | HTML または Markdown から完全なブランド付き HTML 本文（ヘッダー/フッター、Tenant 情報ボックス、添付ファイル一覧）を組み立てます。送信前にメールをレンダリングして確認するのに便利です。 |
| `Resolve-RjRbImageSource`        | ヘッダー/フッター画像のパスをインライン CID ソースに解決し、エラー時にはバンドルされた既定値にフォールバックします。                                              |

これらは主に高度なシナリオやテスト向けです。通常の方法は次を呼び出すことです `Send-RjRbReportEmail` 直接。

## 関連項目

* [ランブック レポート設定](/ja/zi-dong-hua/runbooks/runbook-report-settings.md) — 送信者メールボックス、サービスデスク情報、および Storage Account 配信チャネルの中央構成。
* Microsoft Graph: [メールの送信](https://learn.microsoft.com/en-us/graph/api/user-sendmail) — 基盤となる API。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.realmjoin.com/ja/dev-reference/report-functions/send-rjrbreportemail.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
