> 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

Markdown コンテンツを使用して Microsoft Graph 経由で、ブランド付き HTML レポート メールを Azure Automation runbook から送信します。

## 概要

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

> **このリリースで名称が変更されました。** この関数は `Send-RjReportEmail` から `Send-RjRbReportEmail` モジュールの他の部分との命名整合性を保つために（`*-RjRb*`）に名称変更されました。旧名 `Send-RjReportEmail` は後方互換のエイリアスとしてエクスポートされているため、既存の runbook は変更なしでそのまま動作します — ただし、新しい runbook では `Send-RjRbReportEmail`.

主な特長:

* **Markdown を入力、HTML を出力** — runbook はレポート本文を Markdown で作成し、この関数が Outlook Classic、New Outlook、Outlook Web、モバイル クライアント、ダーク モード全体で動作するテーマ付き HTML にレンダリングします。
* **受信者ごとに 1 通のメール** — 複数の受信者が指定された場合、この関数は 1 通の複数受信者宛メールではなく、各アドレスに個別のメッセージを送信します。これはプライバシー/BCC 既定の設計です。
* **インラインのブランド付きヘッダーとフッター** — 同梱の PNG アセットは CID 添付として送信され、埋め込み HTML から参照されます。どちらも上書きまたは完全に無効化できます。
* **テンプレート色のカスタマイズ** — テンプレートのアクセント色とテキスト色は呼び出しごとに上書きできるため、レポートメールを顧客のコーポレートデザインに合わせられます。
* **組み込みの添付サイズガード** — 通常のセットがサイズ上限を超えるか送信試行が失敗した場合、より小さいフォールバック添付セットが自動的に送信されます。
* **自動接続** — Graph セッションがアクティブでない場合、この関数は透過的に `Connect-RjRbGraph` （または `Connect-MgGraph -Identity` を `-UseNativeGraphRequest` が設定されている場合）。
* **堅牢** — 添付ファイルの読み取り失敗、無効な画像の上書き、無効な色、または受信者ごとの sendMail 失敗は報告されますが、 *すべての* 受信者で失敗した場合を除いて、バッチ全体は中断されません。

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

## 前提条件

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

From アドレスとして、ライセンス済みの Microsoft 365 メールボックス（通常は `realmjoin-report@contoso.com`のような専用の共有メールボックス）が必要です。Automation Account のマネージド ID には、Graph `From` アドレスとして、そのメールボックスの代理で送信する権限が付与されている必要があります。これは `Mail.Send` アプリケーション権限（ID を 1 つのメールボックスに制限したい場合は、アプリケーション用 RBAC でスコープを絞る）を通じて行われます。

> **送信者は Microsoft 365 グループであってはなりません。** この関数は Graph エンドポイント `/users/{EmailFrom}/sendMail` 経由で送信します — Microsoft 365 グループはユーザー オブジェクトではないため、呼び出しは失敗します。ユーザーまたは共有メールボックスを使用してください。
>
> Microsoft 365 グループのアドレスは **受信者** として技術的には受け入れられますが、 **推奨されません**：メッセージはグループ メールボックスにしか届かない場合があり（メンバーが個別コピーを受け取るのはグループをフォローしている場合のみです）、グループの配信管理が送信者を拒否することもあり、配信失敗は送信者メールボックスの NDR としてのみ表面化します — runbook 自体は成功として報告し続けます。個別のメールボックス アドレスを推奨します。

### 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   "Weekly Report" `
    -MarkdownContent @"
# 週間レポート

こんにちは、Alice、

今週の数値はこちらです:

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

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

## パラメーター

### 必須

| パラメーター            | 型        | 説明                                                                                                                                               |
| ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `EmailFrom`       | `string` | 送信者メールボックスのユーザー プリンシパル名またはオブジェクト ID。 `/users/{id}/sendMail`として使用されます。ユーザーまたは共有メールボックスでなければなりません — Microsoft 365 グループはユーザー オブジェクトではないため、送信は失敗します。 |
| `EmailTo`         | `string` | 受信者アドレス。 **単一の文字列** — 複数のアドレスはカンマ区切りの一覧として渡されます。詳細は以下を参照してください。Microsoft 365 グループのアドレスは受け入れられますが推奨されません — メンバーへの配信は保証されず、失敗は runbook から見えません。    |
| `Subject`         | `string` | 件名。HTML の `<title>` 要素にも挿入されます。                                                                                                                  |
| `MarkdownContent` | `string` | Markdown のレポート本文。サポートされている構文については [Markdown Support](#markdown-support) を参照してください。                                                               |

### 任意 — コンテンツ

| パラメーター              | 型          | 既定      | 説明                                                                                                         |
| ------------------- | ---------- | ------- | ---------------------------------------------------------------------------------------------------------- |
| `Attachments`       | `string[]` | `@()`   | 添付するローカル ファイル パスです。存在しないファイルはログに記録されてスキップされ、読み取れないファイルは警告を出しますが送信は中断しません。MIME タイプはファイル拡張子から推定されます。         |
| `saveToSentItems`   | `bool`     | `$true` | If `$true` 送信されたメッセージは送信者メールボックスの *Sent Items*に保持されます。 `$false` に設定すると、ボックスを埋めてしまうのを避けるため、大量レポート向けに適しています。 |
| `TenantDisplayName` | `string`   | —       | コンテンツ領域の末尾に埋め込まれた tenant-info ボックスに表示されます。                                                                 |
| `ReportVersion`     | `string`   | —       | tenant-info ボックスに表示されます（セマンティック バージョン文字列、ビルド番号、または runbook 名 + 日付を使用してください）。                               |

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

| パラメーター        | 型        | 既定                          | 説明                                                                                                                                                                          |
| ------------- | -------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `HeaderImage` | `string` | 同梱の `Assets/Header.png`     | 既定のヘッダー画像を上書きする PNG/JPG/GIF のローカル ファイル パスです。 **runbook は、URL/blob を事前にローカル ファイルに解決しておく必要があります** （例: `Get-AzStorageBlobContent`を使用）。存在しない/読み取れない上書きは同梱の既定値にフォールバックし、警告を出します。 |
| `FooterImage` | `string` | 同梱の `Assets/Footer.png`     | と同じ扱いです。 `HeaderImage`フッターは 1 つのクリック可能な画像としてレンダリングされます — すべてのブランド文言、ロゴ、URL は PNG に埋め込んでおく必要があります。                                                                           |
| `FooterLink`  | `string` | `https://www.realmjoin.com` | フッター画像を囲むアンカーの `href` および `title` として使われる URL です。                                                                                                                           |
| `NoHeader`    | `switch` | オフ                          | ヘッダー画像を完全に非表示にします。 `HeaderImage`と組み合わせると、警告が出され、上書きは無視されます。                                                                                                                 |
| `NoFooter`    | `switch` | オフ                          | フッター画像とそのリンクを完全に非表示にします。 `FooterImage` またはカスタム `FooterLink`と組み合わせると、警告が出され、それらの値は無視されます。                                                                                    |
| `AccentColor` | `string` | `#f8842c`                   | *0.8.9 で追加。* テーブルのヘッダー行、アクション ボタン、情報ボックスのアクセント枠に使う 6 桁の 16 進カラーです。空または不正な値では警告が出て、既定にフォールバックします。                                                                            |
| `TextColor`   | `string` | `#011e33`                   | *0.8.9 で追加。* 本文テキスト、見出し、リスト項目、コードに使う 6 桁の 16 進カラーです。フォールバック動作は `AccentColor`.                                                                                               |

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

**色:** なしで `AccentColor`/`TextColor` 生成される HTML は、以前のモジュール バージョンとバイト単位で同一です — 既定値は RealmJoin のオレンジとネイビーです。ステータス色（緑/赤/琥珀）や中立グレーは、意味を持つため意図的にパラメーター化されていません。カスタム色はライト モードとダーク モードの両方で確認してください。ダーク モードでもコンテンツ カードは白のままなので、非常に薄いテキスト色は読めなくなります。

### 任意 — 添付サイズガード

*0.8.9 で追加。* Graph はメッセージが約 4 MB を超えるとリクエスト全体を拒否します。レポートを失敗させる代わりに、この関数はより小さい添付セットにフォールバックできます。このロジックは以前、インラインの runbook ヘルパー `sendMail` Send-RjRbGuardedReportEmail `として重複実装されていましたが、現在は関数自体の一部です。` です。

| パラメーター                    | 型          | 既定                   | 説明                                                                                                                                   |
| ------------------------- | ---------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `FallbackAttachments`     | `string[]` | —                    | 通常のセットが `MaxAttachmentBytes`を超える場合、または通常のセットでの送信がすべての受信者で失敗した場合に使用される、より小さい添付セットです。このパラメーターがない場合、フォールバックはなく、失敗した送信は即座に例外を投げます。       |
| `FallbackMarkdownContent` | `string`   | の値 `MarkdownContent` | フォールバック セットが送信されるときに使われる本文です — どのファイルが除外されたか、またそれらをどう入手するかを説明するために使ってください。                                                           |
| `MaxAttachmentBytes`      | `long`     | `2.5MB`              | 通常の添付セットの生サイズ上限です。base64 エンコード（+33%）、HTML 本文、インラインのブランド画像を加えても、約 4 MB の Graph 制限を安全に下回ります。 `FallbackAttachments` 指定されている場合にのみ適用されます。 |

ガードは 2 段階で動作します:

1. **送信前** — 通常のセットが上限を超えた場合、フォールバック セットが直接送信され、メッセージには両方のサイズが示されます。
2. **送信失敗後** — 通常のセットでの送信が *すべての* 受信者で失敗した場合、関数が例外を投げる前に、フォールバック セットで 1 回再試行します。

### 任意 — 送信方法

| パラメーター                  | 型        | 既定 | 説明                                                                                                                                                                                        |
| ----------------------- | -------- | -- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `UseNativeGraphRequest` | `switch` | オフ | を使う `Invoke-MgGraphRequest` 経由で送信します（ `Microsoft.Graph` モジュールと `Connect-MgGraph` セッションが必要） `Invoke-RjRbRestMethodGraph`の代わりに。runbook を 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"
```

添付されたファイルは、メッセージに実際の添付として追加されるだけでなく、メール本文の下部にある「Attached Files」ボックスにも一覧表示されます。

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

まずアセットをローカル パスにダウンロードして独自のブランディングを用意し、その後、そのパスを渡してください。この関数自体は URL を取得しません。

```powershell
Azure Blob Storage から runbook の一時フォルダーにブランディング アセットを解決する
$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"
```

If `$headerPath` が欠落しているか読み取れない場合でも、呼び出しは成功します — 同梱の RealmJoin 既定値が使われ、警告が記録されます。

### カスタム テンプレート色

メールを顧客のコーポレートデザインに合わせます。両方のパラメーターは独立しており — アクセント色だけを上書きすると、既定のテキスト色はそのまま維持されます:

```powershell
Send-RjRbReportEmail `
    -EmailFrom       "realmjoin-report@contoso.com" `
    -EmailTo         "alice@contoso.com" `
    -Subject         "ブランド付きレポート" `
    -MarkdownContent $reportMd `
    -AccentColor     "#0052cc" `
    -TextColor       "#1a1a2e"
```

無効な値（たとえば `blue` または `#05c`）でも送信は失敗しません。警告でパラメーター名が示され、既定の色が使用されます。

### フォールバック添付セットを使う大きなレポート

CSV と Excel ブックを生成しますが、2 つの合計がサイズ上限を超えた場合は、ブック単体にフォールバックします:

```powershell
$sizeHint = "CSV エクスポートは、添付ファイルがメールサイズ上限を超えたため省略されました。Excel ブックには完全なデータが含まれています。"

Send-RjRbReportEmail `
    -EmailFrom                "realmjoin-report@contoso.com" `
    -EmailTo                  "it-reports@contoso.com" `
    -Subject                  "デバイス在庫" `
    -MarkdownContent          $reportMd `
    -Attachments              @($csvPath, $xlsxPath) `
    -FallbackAttachments      @($xlsxPath) `
    -FallbackMarkdownContent  ($reportMd + "`n`n> **注:** $sizeHint")
```

インライン ヘルパーから移行する runbook は `として重複実装されていましたが、現在は関数自体の一部です。` その関数を削除して、呼び出しを `Send-RjRbReportEmail` に名前変更できます — パラメーター名（`Attachments`, `FallbackAttachments`, `FallbackMarkdownContent`, `MaxAttachmentBytes`）は変更されていません。

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

マーケティングメールのように見せたくないアラート風通知には:

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

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

runbook がすでに `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         "Weekly Report" `
    -MarkdownContent $reportMd
```

### アクション ボタン（CTA）

Markdown リンクに `{button}` を追加することで、1 つ以上のブランド付きボタンをレンダリングします。同じ行に置かれたボタンは 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 Support

この関数には、軽量な Markdown → HTML 変換器が組み込まれています。 **外部の Markdown モジュールは不要です。** サポートされている構文:

| Markdown                                      | 注記                                                                                                                                                                              |
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `# … ######` 見出し                              | 6レベルすべて。後ろのスペースは `#` 任意です。 `h1` 下線が付きます。Outlook向けに余白を調整しています。                                                                                                                   |
| `**bold**`, `*italic*`, `~~strike~~`          | インライン専用（複数行にまたがってはいけません）。                                                                                                                                                       |
| `` `inline code` ``                           | 次のように表示されます `<code>` 薄いグレーの背景付きで。                                                                                                                                               |
| lang ... のフェンス付きコードブロック                       | 言語タグは次のように保持されます `class="language-…"`。また、壊れた単一バッククォートのフェンスも許容します。                                                                                                               |
| `[text](url)` リンク                             | 次で新しいタブで開きます: `noopener noreferrer`.                                                                                                                                            |
| `[label](url){button}` リンクボタン                 | 通常のリンクではなく、ブランド付きのオレンジ色のCTAボタンとして表示されます。複数の `{button}` 行上のリンクは **同じ行** で横並びに表示されます（幅は均等に分割）。角丸は現代的なクライアント（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スタイルの注意書きです。blockquoteの1行目がマーカー単独で、残りの `>`「-」で始まる行が本文です。各タイプにはそれぞれ専用のアクセントカラー、グリフ、タイトルバーがあります。                                                                            |
| `---`, `***`, `___`                           | 水平線。                                                                                                                                                                            |
| `\|col\|col\|` テーブル                           | 標準的なパイプテーブルで、 `:---`, `:---:`, `---:` 配置指定子を備えています。ヘッダー行と区切り行が必要です。                                                                                                             |
| `\\` エスケープ                                    | `\*`, `\|` などは尊重されるため、リテラルなMarkdown文字を出力できます。                                                                                                                                   |

サポートされない項目には脚注、定義リスト、HTMLのそのまま通過が含まれます — Markdownは上の表に限定してください。

## 動作とエラー処理

### 宛先の解析

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

### 受信者ごとの失敗

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

* If **少なくとも1件の** 送信が成功し、他が失敗した場合は、失敗したアドレスを列挙した警告が出力され、関数は通常どおり戻ります。
* If **すべての** すべての送信が失敗した場合、関数は次をスローします `すべての受信者へのメール送信に失敗しました: …` そのため、runbookは明確に失敗します。

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

* 存在しないファイル（パスが存在しない） — 詳細にログ出力され、静かにスキップされます。
* 存在はするが読み取れないファイル（ロック中、権限拒否） — 警告が出力され、スキップされ、呼び出しの残りは続行されます。
* メール下部の「Attached Files」ボックスには、正常に読み取れた添付ファイルのみが一覧表示されます。

### 画像上書きの失敗

両方 `HeaderImage` および `FooterImage` いずれのエラー（ファイル欠落、I/Oエラー、または有効な画像でないファイル）でも同梱の既定値にフォールバックします。警告は失敗内容を説明し、どの既定値が使用されたかを示します。

0.8.9以降、画像形式は次から判定されます **ファイルシグネチャ** （マジックバイト）であり、ファイル拡張子ではありません。名前が `.png` しかし実際にはHTMLエラーページを含むファイル — ダウンロードが静かにエラードキュメントを返すときによくある結果 — は、壊れたインライン添付を生成する代わりに、警告付きで拒否されます。逆に、誤解を招く拡張子で保存された有効なPNGは受け入れられ、正しく型判定されます。

### 無効な色

`AccentColor` および `TextColor` は次の正規表現で検証されます `^#[0-9A-Fa-f]{6}$`。一致しない値では、パラメーター名を示す警告が出力され、送信は既定の色で続行されます。色が原因でレポートが失敗することはありません。

### 合計サイズ制限

Graphは上限を設けています `sendMail` リクエストの合計は約4 MB（HTML本文 + すべての添付、base64エンコード後）に制限されます。いずれかのブランド画像が3 MBを超えると、関数は警告を出力します。

次の場合 `FallbackAttachments` が指定されている場合、上記のパラメーター節で説明した添付サイズガードが、大きすぎるペイロードを自動的に処理します。フォールバックセットがない場合、サイズ超過のリクエストはGraph呼び出しで失敗します。次を検討してください:

* 次を指定すること `FallbackAttachments` セット（たとえば、生のCSVファイルを含まないExcelワークブック）。
* 代わりに大きなデータをStorage Accountチャネルにアップロードする — 参照: [Runbook レポート設定](/ja/zi-dong-hua/runbooks/runbook-report-settings.md#storage-account-delivery).
* 埋め込むのではなく、外部ホストされた添付ファイルへのリンクを使う。
* 表形式データの圧縮（`Compress-Archive`）を添付前に行う。

## Runbookレポート設定との統合

レポート用runbookでは、送信元アドレスやブランドをハードコードしません。RealmJoinポータルが中央のカスタマイズJSONから事前入力する隠しパラメーターを宣言します。利用可能な設定は次に記載されています [Runbook レポート設定](/ja/zi-dong-hua/runbooks/runbook-report-settings.md).

バインドはrunbookの `param()` ブロック内で次を介して行われます: `Use-RJInterface -Type Setting`、そしてパラメーターには `"Hide": true` 次の中で `.INPUTS RunbookCustomization` ブロックで指定され、ポータルフォームを煩雑にしないようにします:

```powershell
param(
    [ValidateScript( { Use-RJInterface -Type Setting -Attribute "RJReport.EmailSender" } )]
    [string]$EmailFrom,

    [ValidateScript( { Use-RJInterface -Type Setting -Attribute "RJReport.Branding.HeaderImageUrl" } )]
    [string]$BrandingHeaderImageUrl,

    [ValidateScript( { Use-RJInterface -Type Setting -Attribute "RJReport.Branding.FooterImageUrl" } )]
    [string]$BrandingFooterImageUrl,

    [ValidateScript( { Use-RJInterface -Type Setting -Attribute "RJReport.Branding.FooterLink" } )]
    [string]$BrandingFooterLink,

    [ValidateScript( { Use-RJInterface -Type Setting -Attribute "RJReport.Branding.AccentColor" } )]
    [string]$BrandingAccentColor,

    [ValidateScript( { Use-RJInterface -Type Setting -Attribute "RJReport.Branding.TextColor" } )]
    [string]$BrandingTextColor
)

if (-not $EmailFrom) {
    throw "EmailSenderが設定されていません。セットアップ手順については https://docs.realmjoin.com/automation/runbooks/runbook-report-settings を参照してください。"
}

# ブランド画像を1回の実行ごとにダウンロードして検証します。返すのはキーのみです
# で、正常に解決されたものだけを返すため、未設定の項目は既定値にフォールスルーします。
$brandingMailParams = Get-RjRbBrandingMailParams `
    -HeaderImageUrl $BrandingHeaderImageUrl `
    -FooterImageUrl $BrandingFooterImageUrl `
    -FooterLink     $BrandingFooterLink `
    -AccentColor    $BrandingAccentColor `
    -TextColor      $BrandingTextColor

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

参照 [Get-RjRbBrandingMailParams](/ja/dev-reference/report-functions/get-rjrbbrandingmailparams.md) を参照して、ダウンロード、検証、クリーンアップのルールを確認してください。

## 出力

関数は成功時には何も返しません。進行状況はすべて次を通じて書き込まれます `Write-RjRbLog -Verbose` （runbookを次の指定で実行すると表示されます `-Verbose` または `$VerbosePreference = 'Continue'`）。警告は次を通して強制的に出力されます `$WarningPreference = 'Continue'` 呼び出し側の上書きに関係なく、そのためAzure Automationのジョブストリームに確実に表示されます。

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

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

| Function                                                                                         | Purpose                                                                                                                                 |
| ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
| [`Get-RjRbBrandingMailParams`](/ja/dev-reference/report-functions/get-rjrbbrandingmailparams.md) | 次を変換します `RJReport.Branding.*` テナント設定をそのまま展開できるパラメーターに変換します。画像をダウンロードして検証し、色とフッターリンクをそのまま渡します。                                           |
| `ConvertFrom-RjRbMarkdownToHtml`                                                                 | 単体のMarkdown → HTML変換器（内部で使われる同じ軽量エンジンで、次の `{button}` 構文も含みます）。受け取るのは `-AccentColor`/`-TextColor`.                                       |
| `Get-RjRbReportEmailBody`                                                                        | HTMLまたはMarkdownから、ブランド付きの完全なHTML本文（ヘッダー/フッター、tenant情報ボックス、添付一覧）を組み立てます — 送信前にメールをレンダリングして確認するのに便利です。受け取るのは `-AccentColor`/`-TextColor`. |
| `Resolve-RjRbImageSource`                                                                        | ヘッダー/フッター画像のパスをインラインCIDソースに解決します。ファイルシグネチャで検証し、PNG、JPEG、GIF以外なら例外を投げます。                                                                 |

を除いて `Get-RjRbBrandingMailParams`、これらは主に高度な用途/テスト用途向けです。通常の手順では次を `Send-RjRbReportEmail` 直接呼び出します。

## 関連項目

* [Get-RjRbBrandingMailParams](/ja/dev-reference/report-functions/get-rjrbbrandingmailparams.md) — runbook内でtenantのブランド設定を解決します。
* [Runbook レポート設定](/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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
