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

## 概要

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

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

主な特徴:

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

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

## 前提条件

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

ライセンス付きの Microsoft 365 メールボックス（通常は `realmjoin-report@contoso.com`）が必要です。 `From` アドレスです。Automation Account のマネージド ID には、そのメールボックスの代理送信を Graph の `Mail.Send` アプリケーション権限で許可する必要があります（ID を 1 つのメールボックスに制限したい場合は、Applications 用 RBAC でスコープを絞れます）。

> **送信者は Microsoft 365 グループであってはなりません。** 関数は Graph エンドポイント `/users/{EmailFrom}/sendMail` 経由で送信します — Microsoft 365 グループは user オブジェクトではないため、この呼び出しは失敗します。ユーザーまたは共有メールボックスを使用してください。
>
> 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 @"
# Weekly Report

Hello Alice,

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

- 新しく登録されたデバイス: **42**
- ライセンス準拠率: **98%**
"@
```

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

## パラメーター

### 必須

| パラメーター            | 型        | 説明                                                                                                                                              |
| ----------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `EmailFrom`       | `string` | 送信者メールボックスのユーザー プリンシパル名またはオブジェクト ID。として使用されます `/users/{id}/sendMail`。ユーザーまたは共有メールボックスである必要があります — Microsoft 365 グループは user オブジェクトではなく、送信は失敗します。 |
| `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`。フッターは単一のクリック可能な画像としてレンダリングされるため、ブランド テキスト、ロゴ、または URL は PNG に埋め込む必要があります。                                                                               |
| `FooterLink`  | `string` | `https://www.realmjoin.com` | フッター画像を囲むアンカーの `href` と `title` として使用される URL。                                                                                                                                |
| `NoHeader`    | `スイッチ`   | オフ                          | ヘッダー画像を完全に抑制します。これと組み合わせると `HeaderImage`、警告が出され、上書きは無視されます。                                                                                                                  |
| `NoFooter`    | `スイッチ`   | オフ                          | フッター画像とそのリンクを完全に抑制します。これと組み合わせると `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 は要求全体を 4 MB で制限し、いずれかの画像が 3 MB を超えると警告が出されます。 `sendMail` 要求全体を 4 MB で制限し、いずれかの画像が 3 MB を超えると警告が出されます。

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

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

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

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

ガードは 2 段階で実行されます:

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

### 任意 — 送信方式

| パラメーター                  | 型      | 既定 | 説明                                                                                                                                                                                                           |
| ----------------------- | ------ | -- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `UseNativeGraphRequest` | `スイッチ` | オフ | Invoke-MgGraphRequest 経由で送信します `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   "Monthly Inventory" `
    -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           "Device Inventory — $(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          "Branded Report" `
    -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         "Branded Report" `
    -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                  "Device Inventory" `
    -MarkdownContent          $reportMd `
    -Attachments              @($csvPath, $xlsxPath) `
    -FallbackAttachments      @($xlsxPath) `
    -FallbackMarkdownContent  ($reportMd + "`n`n> **Note:** $sizeHint")
```

インライン ヘルパーから移行する runbook `Send-RjRbGuardedReportEmail` はその関数を削除し、呼び出しを次へ変更できます `Send-RjRbReportEmail` — パラメーター名（`Attachments`, `FallbackAttachments`, `FallbackMarkdownContent`, `MaxAttachmentBytes`）は変更されません。

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

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

```powershell
Send-RjRbReportEmail `
    -EmailFrom       "realmjoin-report@contoso.com" `
    -EmailTo         "oncall@contoso.com" `
    -Subject         "[ALERT] License threshold exceeded" `
    -MarkdownContent "## License threshold exceeded`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               "Native Graph send" `
    -MarkdownContent       $reportMd `
    -UseNativeGraphRequest
```

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

大きなレポートの場合は、Markdown を .md ファイルとして生成し、次のように読み込みます: `.md` file and read it in:

```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}` リンクが **同じ行にある場合** は 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 風の警告ブロックです。blockquote の 1 行目はマーカー単独で、残りの `>`「-」で始まる行が本文です。各タイプにはそれぞれ専用のアクセントカラー、グリフ、タイトルバーがあります。                                                                                             |
| `---`, `***`, `___`                           | 水平線。                                                                                                                                                                                                |
| `\|col\|col\|` テーブル                           | 標準的なパイプテーブルで、 `:---`, `:---:`, `---:` 配置指定子を使用します。ヘッダー行と区切り行が必須です。                                                                                                                                  |
| `\\` エスケープ                                    | `\*`, `\|` などは尊重されるため、リテラルの Markdown 文字を出力できます。                                                                                                                                                     |

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

## 動作とエラー処理

### 受信者の解析

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

### 受信者ごとの失敗

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

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

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

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

### 画像上書きの失敗

両方とも `HeaderImage` と `FooterImage` どちらも、いずれかのエラー（ファイルがない、IO エラー、または有効な画像ではないファイル）が発生すると、同梱の既定値にフォールバックします。警告には失敗内容と、どの既定値が使われたかが示されます。

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

### 無効な色

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

### 合計サイズ制限

Graph では制限されます `sendMail` 約 4 MB の合計（HTML 本文 + すべての添付ファイル、base64 エンコード）でリクエストが制限されます。どちらかのブランド画像が 3 MB を超えると、関数は警告を出力します。

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

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

## Runbook Report Settings との統合

レポート用 runbook は送信者アドレスやブランドをハードコードしません。RealmJoin ポータルが中央のカスタマイズ JSON から事前入力する隠しパラメーターを宣言します。利用可能な設定は次に文書化されています [Runbook Report Settings](/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" -Value $_ } )]
    [string]$EmailFrom,

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

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

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

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

    [ValidateScript( { Use-RJInterface -Type Setting -Attribute "RJReport.Branding.TextColor" -Value $_ } )]
    [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 を組み立てたりプレビューしたりできます:

| 関数                                                                                               | 目的                                                                                                                                             |
| ------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| [`Get-RjRbBrandingMailParams`](/ja/dev-reference/report-functions/get-rjrbbrandingmailparams.md) | 次を変換します `RJReport.Branding.*` Tenant 設定を、そのまま展開できるパラメーターに変換します。画像をダウンロードして検証し、色とフッターリンクをそのまま渡します。                                              |
| `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 Report Settings](/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.
