Send-RjReportEmail
Markdown コンテンツを使用して、Azure Automation Runbook から Microsoft Graph 経由でブランド付き HTML レポートメールを送信します。
概要
Send-RjReportEmail RealmJoin のレポート runbook からレポートメールを配信するための標準ヘルパーです。Markdown コンテンツを受け取り、RealmJoin ブランドのレスポンシブ HTML メールに変換し、オプションのファイルとインラインのブランド画像(ヘッダー/フッター)を添付して、Microsoft Graph 経由で結果を送信します sendMail エンドポイント。
主な特長:
Markdown を入力し、HTML を出力 — runbook ではレポート本文を Markdown で作成します。関数はそれをテーマ付き HTML にレンダリングし、Outlook Classic、New Outlook、Outlook Web、モバイルクライアント、ダークモード全体で動作します。
受信者ごとに 1 通のメール — 複数の受信者が指定された場合、関数は単一の複数受信者宛メールではなく、各アドレスに個別のメッセージを送信します。これはプライバシー/BCC デフォルト設計です。
インラインのブランド付きヘッダーとフッター — 同梱の PNG アセットは CID 添付ファイルとして送信され、埋め込み HTML から参照されます。どちらも上書きまたは完全に非表示にできます。
自動接続 — Graph セッションがアクティブでない場合、関数は透過的に
Connect-RjRbGraph(またはConnect-MgGraph -Identityのとき-UseNativeGraphRequestが設定されている場合)。堅牢 — 添付ファイル読み取りの失敗、画像上書きの欠落、または受信者ごとの sendMail の失敗は報告されますが、 すべて の受信者が失敗した場合を除き、バッチ全体は中断されません。
中央管理されたメール設定(送信者アドレス、サービスデスク情報)は Runbook Report Settings に記載されています—このドキュメントでは、runbook から関数を呼び出す方法に焦点を当てます。
前提条件
送信者メールボックス
ライセンス付きの Microsoft 365 メールボックス(通常は [email protected] のような専用の共有メールボックス)が [email protected]を From アドレスとして必要です。Automation Account のマネージド ID は、Graph の Mail.Send アプリケーション権限を介してそのメールボックスの代理で送信できる必要があります(ID を 1 つのメールボックスに制限したい場合は、Applications 向けの RBAC でスコープ設定します)。
Graph の権限
既定(Invoke-RjRbRestMethodGraph)
Mail.Send (Application)を送信者メールボックスに対して
〜付きで -UseNativeGraphRequest
同じです — 呼び出しは引き続き /users/{id}/sendMail
モジュール接続
既定では、関数は Invoke-RjRbRestMethodGraph このモジュールからです。接続がアクティブでない場合は、自動接続します。 Connect-RjRbGraph。 -UseNativeGraphRequest が設定されている場合、関数は代わりに Get-MgContext を確認し、 Connect-MgGraph -Identity -NoWelcome を必要に応じて呼び出します。
クイック スタート
最小限の呼び出しには、送信者、受信者、件名、および Markdown 本文のみが必要です:
これにより、既定のヘッダーとフッター、ライト/ダークモード対応、およびフッター内の Tenant/バージョン ブロックを備えた、完全にブランド化された RealmJoin メールが生成されます。
パラメーター
必須
EmailFrom
string
送信者メールボックスのユーザー プリンシパル名またはオブジェクト ID。として使用されます /users/{id}/sendMail.
EmailTo
string
受信者アドレス。 単一の文字列 — 複数のアドレスはカンマ区切りの一覧として渡されます。詳細は以下を参照してください。
件名
string
件名。HTML の <title> 要素にも挿入されます。
オプション — コンテンツ
添付ファイル
string[]
@()
添付するローカル ファイル パス。欠落しているファイルはログに記録されてスキップされ、読み取れないファイルは警告を出しますが、送信は中断されません。MIME タイプはファイル拡張子から決定されます。
saveToSentItems
bool
$true
もし $true 送信済みメッセージが送信者メールボックスの Sent Itemsに保存されます。次に設定します $false 大量のレポートでは、メールボックスがいっぱいになるのを避けるために使用します。
TenantDisplayName
string
—
コンテンツ領域の末尾に埋め込まれた Tenant 情報 बॉックスに表示されます。
ReportVersion
string
—
Tenant 情報 बॉックスに表示されます(セマンティック バージョン文字列、ビルド番号、または 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、警告が出てそれらの値は無視されます。
推奨画像サイズ: 750 × 200 px の PNG です。これはメール コンテナーの幅と同梱の既定に一致します。アスペクト比が大きく異なると、狭いビューポートでは歪んで見える場合があります。各画像は 3 MB を大きく下回るようにしてください — Graph は要求全体を 4 MB に制限しており、いずれかの画像が 3 MB を超えると警告が出ます。 sendMail Graph は、要求の合計を 4 MB で制限します。
オプション — 送信方法
UseNativeGraphRequest
switch
オフ
経由で送信します Invoke-MgGraphRequest (必要 Microsoft.Graph モジュールと Connect-MgGraph セッション)が必要です。ではなく Invoke-RjRbRestMethodGraph。runbook が RealmJoin ラッパーではなくネイティブ SDK を中心に構築されている場合に使用します。
使用例
複数受信者
EmailTo 1 つ以上のカンマ区切りアドレスを含む単一の文字列を受け取ります。各アドレスはトリムされ、空の項目は削除され、 受信者ごとに個別のメールが 1 通送信されます — 受信者同士は互いに見えません。
添付ファイルと Tenant メタデータ付き
添付されたファイルは、メッセージへの実際の添付ファイルとして追加されることに加えて、メール本文の下部にある「添付ファイル」 बॉックスに一覧表示されます。
カスタムのヘッダー/フッターブランディング
アセットを先にローカル パスへダウンロードしてから、その結果のパスを渡して、自前のブランドを使用します。関数は URL を自体で取得しません。
もし $headerPath が欠落または読み取り不能でも、呼び出しは成功します — 同梱の RealmJoin 既定が使用され、警告がログに記録されます。
プレーン コンテンツ(ヘッダー/フッターなし)
マーケティングメールのように見せたくないアラート形式の通知では:
ネイティブの Microsoft.Graph SDK を使用する
runbook がすでに次を通じて認証されている場合: Connect-MgGraph (マネージド ID)で、RealmJoin ラッパーを混在させたくない場合:
ファイルからレポート本文を読み込む
より大きなレポートでは、Markdown を .md ファイルに生成して読み込みます:
Markdown サポート
この関数には、組み込みの軽量な Markdown → HTML 変換器が付属しています。 外部 Markdown モジュールは不要です。 対応構文:
# … ###### 見出し
6 段階すべて。 # 後ろのスペースは省略可能。 h1 には下線が付きます。間隔は Outlook 向けに調整されています。
**太字**, *斜体*, ~~取り消し線~~
インライン専用(複数行にまたがってはいけません)。
`inline code`
<code> としてレンダリングされます 薄いグレーの背景で。
lang ... のフェンス付きコードブロック
言語タグは class="language-…"として保持されます。単一バッククォートの不正なフェンスも許容します。
[text](url) リンク
noopener noreferrer 付きで新しいタブで開きます noopener noreferrer.
 画像
<img> として挿入されます (インライン添付の魔法はありません — URL はメール クライアントから到達可能である必要があります)。
- 項目 / 1. 項目 リスト
ネストしたリストは、レベルごとに 2 スペースのインデントで対応します。順序付きと順序なしを混在させると、前のリストが閉じられます。
複数行のリスト項目
<li> の直下にあるインデントされた空でない行は、 <li> と <br> のソフトブレークを伴って同じ項目にまとめられます — 各項目を 1 行に保つ必要はありません。
- [ ] / - [x] タスクリスト
<code> ☐ / ☑ Unicode グリフ(チェック済みのときは緑)。 <input type="checkbox"> は、Outlook Classic がフォーム コントロールを削除するため、意図的に避けられます。大文字の [X] もチェック済みとして扱われます。
> 引用
色付きの左罫線とシェーディングされた背景でレンダリングされます。
> [!NOTE|TIP|IMPORTANT|WARNING|CAUTION]
GitHub 風の注意喚起。引用ブロックの最初の行はマーカー(単独)で、残りの >- 接頭辞付き行が本文です。各種類ごとに独自のアクセントカラー、グリフ、タイトル バーがあります。
---, ***, ___
水平線。
|col|col| テーブル
アライメント指定子付きの標準的なパイプテーブル。 :---, :---:, ---: ヘッダー行と区切り行が必要です。
\\ エスケープ
\*, | などは尊重されるため、リテラルな Markdown 文字を出力できます。
未対応の項目には脚注、定義リスト、HTML のそのまま通過が含まれます — Markdown は上の表に収めてください。
動作とエラーハンドリング
受信者の解析
EmailTo カンマで分割され、各項目はトリムされ、空の項目は削除されます。結果の一覧が空の場合、関数は次をスローします EmailTo パラメーターに有効なメール受信者が見つかりませんでした。 Graph 呼び出しが行われる前に。
受信者ごとの失敗
各受信者は個別に送信されます。関数は成功と失敗を追跡します:
もし 少なくとも 1 件 送信が成功し、他が失敗した場合、失敗したアドレスの一覧を含む警告が出され、関数は正常に戻ります。
もし すべて 送信が失敗した場合、関数は次をスローします
すべての受信者へのメール送信に失敗しました: …そのため runbook は明示的に失敗します。
添付ファイルの失敗
欠落ファイル(パスが存在しない)— 詳細にログされ、静かにスキップされます。
存在するが読み取れないファイル(ロック中、アクセス拒否)— 警告が出てスキップされ、呼び出しの残りは続行されます。
メール下部の「添付ファイル」 बॉックスには、正常に読み取れた添付ファイルのみが一覧表示されます。
画像上書きの失敗
両方 HeaderImage と FooterImage いずれのエラー(ファイル欠落、未対応拡張子、IO エラー)でも同梱の既定にフォールバックします。警告には失敗内容と、どの既定が使用されたかが示されます。
合計サイズ制限
Graph は sendMail 要求を合計約 4 MB(HTML 本文 + すべての添付ファイル、base64 エンコード後)に制限します。いずれかのブランド画像が 3 MB を超えると関数は警告を出します。総ペイロードがなお 4 MB を超える場合、Graph 呼び出し自体が失敗します。検討してください:
大きなデータを Storage Account チャネルにアップロードする — 参照: Runbook Report Settings.
埋め込むのではなく、外部ホストされた添付ファイルにリンクする。
表形式データを圧縮する(
Compress-Archive)を添付前に。
Runbook Report Settings との連携
レポート runbook は通常、送信者アドレスをハードコードせず、中央の RealmJoin カスタマイズ JSON から解決します。関連設定は次に記載されています Runbook Report Settings. runbook における典型的な解決パターンは次のとおりです:
出力
この関数は成功時に何も返しません。すべての進行状況は次を通じて書き込まれます Write-RjRbLog -Verbose (runbook が次のオプション付きで実行された場合に表示されます -Verbose または $VerbosePreference = 'Continue')。警告は次を通じて強制的に出力されます $WarningPreference = 'Continue' 呼び出し側の上書き設定に関係なく、確実に Azure Automation ジョブ ストリームに表示されます。
関連項目
Runbook Report Settings — 送信者メールボックス、サービスデスク情報、および Storage Account 配信チャネルの中央設定。
Microsoft Graph: メールを送信 — 基盤となる API。
最終更新
役に立ちましたか?