> 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/fr/dev-reference/report-functions/send-rjrbreportemail.md).

# Send-RjRbReportEmail

## Vue d'ensemble

`Send-RjRbReportEmail` est l'outil d'assistance standard pour l'envoi d'e-mails de rapport depuis les runbooks de reporting RealmJoin. Il prend du contenu Markdown, le convertit en un e-mail HTML réactif aux couleurs de RealmJoin, y joint des fichiers facultatifs et des éléments graphiques de marque intégrés (en-tête/pied de page), puis envoie le résultat via Microsoft Graph `sendMail` point de terminaison.

> **Renommé dans cette version.** La fonction a été renommée de `Send-RjReportEmail` à `Send-RjRbReportEmail` pour assurer la cohérence de nommage avec le reste du module (`*-RjRb*`). L'ancien nom `Send-RjReportEmail` est exporté comme alias compatible avec les versions antérieures, de sorte que les runbooks existants continuent de fonctionner inchangés — mais les nouveaux runbooks doivent appeler `Send-RjRbReportEmail`.

Caractéristiques principales :

* **Markdown en entrée, HTML en sortie** — les runbooks composent le corps du rapport en Markdown ; la fonction le rend en HTML thématisé qui fonctionne dans Outlook Classic, New Outlook, Outlook Web, les clients mobiles et le mode sombre.
* **Un e-mail par destinataire** — lorsque plusieurs destinataires sont fournis, la fonction envoie un message individuel à chaque adresse plutôt qu'un seul e-mail à plusieurs destinataires. C'est une conception axée sur la confidentialité / CCi par défaut.
* **En-tête et pied de page de marque intégrés** — les ressources PNG fournies sont envoyées comme pièces jointes CID et référencées par le HTML intégré. Les deux peuvent être remplacés ou supprimés entièrement.
* **Couleurs de modèle personnalisables** — la couleur d'accent et la couleur du texte du modèle peuvent être remplacées à chaque appel, afin que les e-mails de rapport puissent suivre la charte graphique du client.
* **Garde intégrée de la taille des pièces jointes** — un ensemble de pièces jointes de secours, plus petit et facultatif, est envoyé automatiquement lorsque l'ensemble standard dépasse le budget de taille ou lorsque sa tentative d'envoi échoue.
* **Auto-connexion** — si aucune session Graph n'est active, la fonction appelle de manière transparente `Connect-RjRbGraph` (ou `Connect-MgGraph -Identity` lorsque `-UseNativeGraphRequest` est défini).
* **Résiliente** — les échecs de lecture des pièces jointes, les remplacements d'images invalides, les couleurs invalides ou les échecs sendMail par destinataire sont signalés mais n'interrompent pas tout le lot, sauf si *tous* les destinataires échouent.

Les paramètres d'e-mail centralisés (adresse de l'expéditeur, informations du service desk) sont documentés dans [Runbook Report Settings](/fr/automatisation/runbooks/runbook-report-settings.md) — ce document se concentre sur l'appel de la fonction depuis un runbook.

## Prérequis

### Boîte aux lettres de l'expéditeur

Une boîte aux lettres Microsoft 365 sous licence (généralement une boîte aux lettres partagée dédiée telle que `realmjoin-report@contoso.com`) est requise comme `De` adresse. L'identité managée du compte Automation doit être autorisée à envoyer au nom de cette boîte aux lettres via la permission d'application Graph `Mail.Send` d'application (délimitée via RBAC for Applications si vous souhaitez restreindre l'identité à une seule boîte aux lettres).

### Permissions Graph

| Scénario                                  | Permission requise                                                 |
| ----------------------------------------- | ------------------------------------------------------------------ |
| Par défaut (`Invoke-RjRbRestMethodGraph`) | `Mail.Send` (Application) sur la boîte aux lettres de l'expéditeur |
| Avec `-UseNativeGraphRequest`             | Identique — l'appel atteint toujours `/users/{id}/sendMail`        |

### Connectivité du module

Par défaut, la fonction utilise `Invoke-RjRbRestMethodGraph` de ce module. Si aucune connexion n'est active, elle se connecte automatiquement via `Connect-RjRbGraph`. Lorsque `-UseNativeGraphRequest` est défini, la fonction vérifie à la place `Get-MgContext` et appelle `Connect-MgGraph -Identity -NoWelcome` à la demande.

## Démarrage rapide

L'appel minimal viable nécessite uniquement l'expéditeur, le destinataire, un objet et le corps Markdown :

```powershell
Send-RjRbReportEmail `
    -EmailFrom "realmjoin-report@contoso.com" `
    -EmailTo   "alice@contoso.com" `
    -Subject   "Rapport hebdomadaire" `
    -MarkdownContent @"
# Rapport hebdomadaire

Bonjour Alice,

voici les chiffres de cette semaine :

- Nouveaux appareils inscrits : **42**
- Conformité des licences : **98 %**
"@
```

Cela produit un e-mail RealmJoin entièrement brandé avec l'en-tête et le pied de page par défaut, la prise en charge des modes clair/sombre, ainsi que le bloc locataire/version dans le pied de page.

## Paramètres

### Requis

| Paramètre         | Type     | Description                                                                                                                                 |
| ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `EmailFrom`       | `string` | Nom principal d'utilisateur ou ID d'objet de la boîte aux lettres de l'expéditeur. Utilisé comme `/users/{id}/sendMail`.                    |
| `EmailTo`         | `string` | Adresse du destinataire. **Chaîne unique** — plusieurs adresses sont passées sous forme de liste séparée par des virgules, voir ci-dessous. |
| `Subject`         | `string` | Ligne d'objet. Insérée également dans le HTML `<title>` élément.                                                                            |
| `MarkdownContent` | `string` | Corps du rapport en Markdown. Voir [Prise en charge de Markdown](#markdown-support) pour la syntaxe prise en charge.                        |

### Facultatif — Contenu

| Paramètre           | Type       | Par défaut | Description                                                                                                                                                                                                                   |
| ------------------- | ---------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Pièces jointes`    | `string[]` | `@()`      | Chemins de fichiers locaux à joindre. Les fichiers manquants sont consignés et ignorés, les fichiers illisibles génèrent un avertissement mais n'interrompent pas l'envoi. Le type MIME est déduit de l'extension du fichier. |
| `saveToSentItems`   | `bool`     | `$true`    | Si `$true` le message envoyé est conservé dans le dossier *Éléments envoyés*. Définissez sur `$false` pour le reporting à fort volume afin d'éviter de remplir la boîte aux lettres.                                          |
| `TenantDisplayName` | `string`   | —          | Affiché dans la zone d'informations du locataire intégrée à la fin de la zone de contenu.                                                                                                                                     |
| `ReportVersion`     | `string`   | —          | Affiché dans la zone d'informations du locataire (utilisez des chaînes de version sémantique, des numéros de build ou un nom de runbook + une date).                                                                          |

### Facultatif — Marque

| Paramètre     | Type          | Par défaut                    | Description                                                                                                                                                                                                                                                                                                            |
| ------------- | ------------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `HeaderImage` | `string`      | intégrées `Assets/Header.png` | Chemin de fichier local vers un PNG/JPG/GIF qui remplace le graphique d'en-tête par défaut. **Le runbook doit résoudre à l'avance toute URL/blob en un fichier local** (par exemple via `Get-AzStorageBlobContent`). Les remplacements manquants/illisibles reviennent au défaut intégré et génèrent un avertissement. |
| `FooterImage` | `string`      | intégrées `Assets/Footer.png` | Même traitement que `HeaderImage`FooterImage. Le pied de page est rendu comme une seule image cliquable — tout texte de marque, logo ou URL doit être intégré dans le PNG.                                                                                                                                             |
| `FooterLink`  | `string`      | `https://www.realmjoin.com`   | URL utilisée comme `href` et `title` de l'ancre entourant l'image du pied de page.                                                                                                                                                                                                                                     |
| `NoHeader`    | `commutateur` | désactivé                     | Supprime entièrement le graphique d'en-tête. Si combiné avec `HeaderImage`HeaderImage                                                                                                                                                                                                                                  |
| `NoFooter`    | `commutateur` | désactivé                     | Supprime entièrement le graphique de pied de page et son lien. Si combiné avec `FooterImage` FooterImage `FooterLink`FooterLink                                                                                                                                                                                        |
| `AccentColor` | `string`      | `#f8842c`                     | *Nouveau dans la version 0.8.9.* Couleur hexadécimale à 6 chiffres pour les lignes d'en-tête des tableaux, les boutons d'action et les bordures d'accent des encadrés d'information. Une valeur vide ou mal formée déclenche un avertissement et revient à la valeur par défaut.                                       |
| `TextColor`   | `string`      | `#011e33`                     | *Nouveau dans la version 0.8.9.* Couleur hexadécimale à 6 chiffres pour le texte du corps, les titres, les éléments de liste et le code. Même comportement de repli que `AccentColor`.                                                                                                                                 |

**Dimensions d'image recommandées :** PNG de 750 × 200 px. Cela correspond à la largeur du conteneur d'e-mail et aux valeurs par défaut intégrées. Des ratios d'aspect très différents peuvent sembler déformés sur les affichages étroits. Chaque graphique doit rester bien en dessous de 3 Mo — Graph limite la requête totale à 4 Mo après l'encodage base64 (+33 %), le corps HTML et les images de marque intégrées. `sendMail` de la requête à 4 Mo et un avertissement est émis si l'une ou l'autre image dépasse 3 Mo.

**Couleurs :** sans `AccentColor`/`TextColor` le HTML généré est identique octet par octet aux versions précédentes du module — les valeurs par défaut sont l'orange et le bleu marine de RealmJoin. Les couleurs d'état (vert/rouge/ambre) et les gris neutres ne sont volontairement pas paramétrables car elles portent du sens. Vérifiez les couleurs personnalisées en mode clair et sombre : la carte de contenu reste blanche en mode sombre, donc une couleur de texte très claire devient illisible.

### Facultatif — Garde de taille des pièces jointes

*Nouveau dans la version 0.8.9.* Graph rejette l'ensemble de la `sendMail` requête une fois que le message dépasse environ 4 Mo. Au lieu d'échouer le rapport, la fonction peut revenir à un ensemble de pièces jointes plus petit. Cette logique était auparavant dupliquée en tant qu'assistant de runbook intégré `Send-RjRbGuardedReportEmail` et fait désormais partie de la fonction elle-même.

| Paramètre                 | Type       | Par défaut                  | Description                                                                                                                                                                                                                                                                                       |
| ------------------------- | ---------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `FallbackAttachments`     | `string[]` | —                           | Ensemble de pièces jointes plus petit utilisé lorsque l'ensemble standard dépasse `MaxAttachmentBytes`, ou lorsque l'envoi avec l'ensemble standard échoue pour chaque destinataire. Sans ce paramètre, il n'existe pas de solution de repli et un envoi échoué lève immédiatement une exception. |
| `FallbackMarkdownContent` | `string`   | valeur de `MarkdownContent` | Corps utilisé lorsque l'ensemble de secours est envoyé — utilisez-le pour expliquer quels fichiers ont été omis et comment les obtenir.                                                                                                                                                           |
| `MaxAttachmentBytes`      | `long`     | `2,5 Mo`                    | Budget de taille brute pour l'ensemble standard de pièces jointes. Reste en toute sécurité sous la limite Graph d'environ 4 Mo après l'encodage base64 (+33 %), le corps HTML et les images de marque intégrées. Évalué uniquement lorsque `FallbackAttachments` est fourni.                      |

La garde s'exécute en deux étapes :

1. **Avant l'envoi** — si l'ensemble standard dépasse le budget, l'ensemble de secours est envoyé directement et un message indique les deux tailles.
2. **Après un envoi échoué** — si l'envoi avec l'ensemble standard échoue pour *tous* destinataires, une nouvelle tentative avec l'ensemble de secours est effectuée avant que la fonction ne lève une exception.

### Facultatif — Transport

| Paramètre               | Type          | Par défaut | Description                                                                                                                                                                                                                                                |
| ----------------------- | ------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `UseNativeGraphRequest` | `commutateur` | désactivé  | Envoie via `Invoke-MgGraphRequest` (nécessite `Microsoft.Graph` module et une session `Connect-MgGraph` ) au lieu de `Invoke-RjRbRestMethodGraph`. Utilisez ceci lorsque le runbook est construit autour du SDK natif plutôt que de l'enveloppe RealmJoin. |

## Exemples d'utilisation

### Destinataires multiples

`EmailTo` accepte une seule chaîne contenant une ou plusieurs adresses séparées par des virgules. Chaque adresse est tronquée, les entrées vides sont supprimées, et **un e-mail individuel est envoyé par destinataire** — les destinataires ne se voient pas mutuellement.

```powershell
Send-RjRbReportEmail `
    -EmailFrom "realmjoin-report@contoso.com" `
    -EmailTo   "alice@contoso.com, bob@contoso.com, team-lead@contoso.com" `
    -Subject   "Inventaire mensuel" `
    -MarkdownContent $reportMd
```

### Avec des pièces jointes et des métadonnées du locataire

```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           "Inventaire des appareils — $(Get-Date -Format 'yyyy-MM-dd')" `
    -MarkdownContent   $reportMd `
    -Attachments       @($csvPath, "$env:TEMP\\summary.xlsx") `
    -TenantDisplayName "Contoso Ltd" `
    -ReportVersion     "DeviceInventory v1.4.2"
```

Les fichiers joints sont répertoriés dans une zone « Fichiers joints » au bas du corps de l'e-mail, en plus d'être ajoutés comme véritables pièces jointes au message.

### Marque personnalisée d'en-tête/pied de page

Apportez votre propre marque en téléchargeant d'abord les ressources vers un chemin local, puis passez les chemins obtenus. La fonction ne récupère pas elle-même les URL.

```powershell
# Résoudre les ressources de marque depuis Azure Blob Storage vers le dossier temporaire du 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          "Rapport brandé" `
    -MarkdownContent  $reportMd `
    -HeaderImage      $headerPath `
    -FooterImage      $footerPath `
    -FooterLink       "https://intranet.contoso.com/it-reports"
```

Si `$headerPath` est manquant ou illisible, l'appel réussit quand même — le défaut RealmJoin intégré est utilisé et un avertissement est consigné.

### Couleurs personnalisées du modèle

Harmonisez l'e-mail avec la charte graphique d'un client. Les deux paramètres sont indépendants — ne remplacer que la couleur d'accent conserve la couleur de texte par défaut :

```powershell
Send-RjRbReportEmail `
    -EmailFrom       "realmjoin-report@contoso.com" `
    -EmailTo         "alice@contoso.com" `
    -Subject         "Rapport brandé" `
    -MarkdownContent $reportMd `
    -AccentColor     "#0052cc" `
    -TextColor       "#1a1a2e"
```

Une valeur invalide (par exemple `bleu` ou `#05c`) n'empêche pas l'envoi : un avertissement nomme le paramètre et la couleur par défaut est utilisée.

### Rapports volumineux avec un ensemble de pièces jointes de secours

Générez un CSV et un classeur Excel, mais revenez au seul classeur lorsque le duo dépasse le budget de taille :

```powershell
$sizeHint = "L'export CSV a été omis parce que les pièces jointes dépassaient la limite de taille des e-mails. Le classeur Excel contient les données complètes."

Send-RjRbReportEmail `
    -EmailFrom                "realmjoin-report@contoso.com" `
    -EmailTo                  "it-reports@contoso.com" `
    -Subject                  "Inventaire des appareils" `
    -MarkdownContent          $reportMd `
    -Attachments              @($csvPath, $xlsxPath) `
    -FallbackAttachments      @($xlsxPath) `
    -FallbackMarkdownContent  ($reportMd + "`n`n> **Note :** $sizeHint")
```

Les runbooks migrant depuis l'assistant intégré `Send-RjRbGuardedReportEmail` peuvent supprimer cette fonction et renommer l'appel en `Send-RjRbReportEmail` — les noms de paramètres (`Pièces jointes`, `FallbackAttachments`, `FallbackMarkdownContent`, `MaxAttachmentBytes`) sont inchangés.

### Contenu simple (sans en-tête/pied de page)

Pour des notifications de type alerte qui ne doivent pas ressembler à un e-mail marketing :

```powershell
Send-RjRbReportEmail `
    -EmailFrom       "realmjoin-report@contoso.com" `
    -EmailTo         "oncall@contoso.com" `
    -Subject         "[ALERT] Seuil de licences dépassé" `
    -MarkdownContent "## Seuil de licences dépassé`n`nVoir le tableau de bord pour plus de détails." `
    -NoHeader `
    -NoFooter
```

### Utilisation du SDK natif Microsoft.Graph

Si le runbook est déjà authentifié via `Connect-MgGraph` (identité managée) et que vous préférez ne pas mélanger l'enveloppe RealmJoin :

```powershell
Connect-MgGraph -Identity -NoWelcome

Send-RjRbReportEmail `
    -EmailFrom             "realmjoin-report@contoso.com" `
    -EmailTo               "alice@contoso.com" `
    -Subject               "Envoi Graph natif" `
    -MarkdownContent       $reportMd `
    -UseNativeGraphRequest
```

### Lecture du corps du rapport depuis un fichier

Pour les rapports plus volumineux, générez le Markdown dans un `.md` fichier puis lisez-le :

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

Send-RjRbReportEmail `
    -EmailFrom       "realmjoin-report@contoso.com" `
    -EmailTo         "alice@contoso.com" `
    -Subject         "Rapport hebdomadaire" `
    -MarkdownContent $reportMd
```

### Boutons d'appel à l'action

Affichez un ou plusieurs boutons de marque en ajoutant `{button}` à un lien Markdown. Les boutons placés sur la même ligne sont regroupés en une seule rangée :

```powershell
$reportMd = @"
# Demande d'accès

Une nouvelle demande d'accès à un appareil attend votre décision.

[Approuver](https://portal.contoso.com/approve/123){button} [Rejeter](https://portal.contoso.com/reject/123){button}
"@

Send-RjRbReportEmail `
    -EmailFrom       "realmjoin-report@contoso.com" `
    -EmailTo         "approver@contoso.com" `
    -Subject         "Action requise : demande d'accès à un appareil" `
    -MarkdownContent $reportMd
```

Chaque bouton est un lien hypertexte normal stylisé comme un CTA — sûr dans tous les clients, avec des coins arrondis dans les clients modernes et des coins carrés dans Outlook Classic.

## Prise en charge de Markdown

La fonction est fournie avec un convertisseur Markdown → HTML léger intégré. **Aucun module Markdown externe n'est requis.** Syntaxe prise en charge :

| Markdown                                      | Notes                                                                                                                                                                                                                                                                                                                                                         |
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `# … ######` titres                           | Les six niveaux. L'espace après `#` est facultatif. `h1` reçoit un soulignement ; l'espacement est ajusté pour Outlook.                                                                                                                                                                                                                                       |
| `**gras**`, `*italique*`, `~~barré~~`         | Uniquement en ligne (ne doit pas s'étendre sur plusieurs lignes).                                                                                                                                                                                                                                                                                             |
| `` `inline code` ``                           | Rendu comme `<code>` avec un fond gris clair.                                                                                                                                                                                                                                                                                                                 |
| blocs de code délimités par lang ...          | La balise de langue est conservée sous la forme `class="language-…"`. Tolère également les fences mal formées à un seul backtick.                                                                                                                                                                                                                             |
| `[text](url)` liens                           | Ouvrir dans un nouvel onglet avec `noopener noreferrer`.                                                                                                                                                                                                                                                                                                      |
| `[label](url){button}` boutons de lien        | Rendu comme un bouton d'appel à l'action orange de marque au lieu d'un simple lien. Plusieurs `{button}` liens sur la **même ligne** s'affichent côte à côte sur une seule ligne (largeur répartie également). Les coins arrondis apparaissent dans les clients modernes (New Outlook, OWA, mobile) ; Outlook Classic (moteur Word) affiche des coins carrés. |
| `![alt](url)` images                          | Inséré comme `<img>` (pas de magie de pièce jointe en ligne — l'URL doit être accessible par le client de messagerie).                                                                                                                                                                                                                                        |
| `- élément` / `1. élément` listes             | Les listes imbriquées sont prises en charge via une indentation de 2 espaces par niveau. Le mélange de listes ordonnées et non ordonnées ferme la liste précédente.                                                                                                                                                                                           |
| Éléments de liste multilignes                 | Une ligne indentée et non vide directement sous un `<li>` est fusionnée dans le même élément avec un `<br>` saut de ligne souple — pas besoin de garder chaque élément sur une seule ligne.                                                                                                                                                                   |
| `- [ ]` / `- [x]` listes de tâches            | Rendu comme `☐` / `☑` glyphes Unicode (verts lorsqu'ils sont cochés). `<input type="checkbox">` est volontairement évité car Outlook Classic supprime les contrôles de formulaire. La majuscule `[X]` compte également comme coché.                                                                                                                           |
| `> citation`                                  | Rendu avec une bordure gauche colorée et un fond ombré.                                                                                                                                                                                                                                                                                                       |
| `> [!NOTE\|TIP\|IMPORTANT\|WARNING\|CAUTION]` | Avertissements de style GitHub. La première ligne de la citation est le marqueur (seul), les `>`lignes préfixées par - constituent le corps. Chaque type reçoit sa propre couleur d'accent, son glyphe et sa barre de titre.                                                                                                                                  |
| `---`, `***`, `___`                           | Règle horizontale.                                                                                                                                                                                                                                                                                                                                            |
| `\|col\|col\|` tableaux                       | Tableaux standards à barres avec `:---`, `:---:`, `---:` des spécificateurs d'alignement. Ligne d'en-tête + séparateur requis.                                                                                                                                                                                                                                |
| `\\` échappement                              | `\*`, `\|` etc. sont respectés afin que les caractères Markdown littéraux puissent être émis.                                                                                                                                                                                                                                                                 |

Les éléments non pris en charge incluent les notes de bas de page, les listes de définitions et le passage HTML — limitez le Markdown au tableau ci-dessus.

## Comportement et gestion des erreurs

### Analyse des destinataires

`EmailTo` est séparé par des virgules, chaque entrée est tronquée et les entrées vides sont supprimées. Si la liste résultante est vide, la fonction lève `Aucun destinataire d'e-mail valide trouvé dans le paramètre EmailTo.` avant qu'un appel Graph ne soit effectué.

### Échecs par destinataire

Chaque destinataire est traité indépendamment. La fonction suit les réussites et les échecs :

* Si **au moins un** si un envoi réussit mais que d'autres échouent, un avertissement est émis listant les adresses en échec ; la fonction retourne normalement.
* Si **tous** si tous les envois échouent, la fonction lève `Échec de l'envoi de l'e-mail à tous les destinataires : …` afin que le runbook échoue de manière explicite.

### Échecs des pièces jointes

* Fichiers manquants (le chemin n'existe pas) — consignés en détail, ignorés silencieusement.
* Fichiers existants mais illisibles (verrouillés, autorisation refusée) — avertissement émis, ignorés, le reste de l'appel se poursuit.
* La zone « Fichiers joints » en bas de l'e-mail répertorie uniquement les pièces jointes qui ont été lues avec succès.

### Échecs de remplacement des images

Les deux `HeaderImage` et `FooterImage` reviennent aux valeurs par défaut intégrées en cas d'erreur (fichier manquant, erreur d'E/S ou fichier qui n'est pas une image valide). Un avertissement décrit l'échec et indique quel défaut a été utilisé.

Depuis 0.8.9, le format de l'image est déterminé à partir de la **signature de fichier** (octets magiques) plutôt que l'extension du fichier. Un fichier nommé `.png` mais contenant en réalité une page d'erreur HTML — résultat courant lorsqu'un téléchargement renvoie silencieusement un document d'erreur — est désormais rejeté avec un avertissement au lieu de produire une pièce jointe inline défectueuse. À l'inverse, un PNG valide enregistré sous une extension trompeuse est accepté et correctement typé.

### Couleurs invalides

`AccentColor` et `TextColor` sont validées par rapport à `^#[0-9A-Fa-f]{6}$`. Une valeur qui ne correspond pas émet un avertissement nommant le paramètre et l'envoi se poursuit avec la couleur par défaut. Les couleurs ne sont jamais une cause d'échec d'un rapport.

### Limite de taille totale

Graph plafonne `sendMail` les requêtes à \~4 Mo au total (corps HTML + toutes les pièces jointes, encodées en base64). La fonction émet un avertissement lorsque l'une ou l'autre des images de marque dépasse 3 Mo.

Lorsque `FallbackAttachments` est fourni, la protection de taille des pièces jointes décrite dans la section des paramètres ci-dessus gère automatiquement les charges utiles trop volumineuses. Sans ensemble de secours défini, une requête trop volumineuse échoue lors de l'appel Graph ; envisagez :

* Fournir un `FallbackAttachments` ensemble de secours (par exemple le classeur Excel sans les fichiers CSV bruts).
* Téléverser les grandes données vers le canal Storage Account à la place — voir [Runbook Report Settings](/fr/automatisation/runbooks/runbook-report-settings.md#storage-account-delivery).
* lier des pièces jointes hébergées à l'extérieur plutôt que de les intégrer.
* Compresser les données tabulaires (`Compress-Archive`) avant la pièce jointe.

## Intégration avec les paramètres du rapport du runbook

Les runbooks de rapport n'encodent pas en dur l'adresse de l'expéditeur ni l'identité visuelle : ils déclarent des paramètres masqués que le portail RealmJoin préremplit à partir du JSON de personnalisation central. Les paramètres disponibles sont documentés dans [Runbook Report Settings](/fr/automatisation/runbooks/runbook-report-settings.md).

L'association se fait dans le `param()` bloc via `Use-RJInterface -Type Setting`, et les paramètres sont marqués `"Hide": true` dans le `.INPUTS RunbookCustomization` bloc afin qu'ils n'encombrent pas le formulaire du portail :

```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 "Aucun EmailSender configuré. Voir https://docs.realmjoin.com/automation/runbooks/runbook-report-settings pour les instructions de configuration."
}

# Télécharger et valider les images de marque une fois par exécution ; ne renvoie que les clés
# qui ont été résolues avec succès, afin que les paramètres non définis retombent sur les valeurs par défaut.
$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
```

Voir [Get-RjRbBrandingMailParams](/fr/dev-reference/report-functions/get-rjrbbrandingmailparams.md) pour les règles de téléchargement, de validation et de nettoyage.

## Sorties

La fonction ne renvoie rien en cas de succès. Toute la progression est écrite via `Write-RjRbLog -Verbose` (visible lorsque le runbook est exécuté avec `-Verbose` ou `$VerbosePreference = 'Continue'`). Les avertissements sont forcés via `$WarningPreference = 'Continue'` quelle que soit la surcharge côté appelant, de sorte qu'ils apparaissent de manière fiable dans le flux des travaux Azure Automation.

## Aides exportées associées

Les blocs de construction derrière `Send-RjRbReportEmail` sont désormais également exportés depuis le module, afin que les runbooks puissent composer ou prévisualiser le HTML sans l'envoyer :

| Fonction                                                                                         | Objet                                                                                                                                                                                                                                                               |
| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`Get-RjRbBrandingMailParams`](/fr/dev-reference/report-functions/get-rjrbbrandingmailparams.md) | Transforme les `RJReport.Branding.*` paramètres du tenant en paramètres prêts à être splattés : télécharge et valide les images, transmet les couleurs et le lien de pied de page.                                                                                  |
| `ConvertFrom-RjRbMarkdownToHtml`                                                                 | Convertisseur Markdown → HTML autonome (le même moteur léger utilisé en interne, y compris la `{button}` syntaxe). Accepte `-AccentColor`/`-TextColor`.                                                                                                             |
| `Get-RjRbReportEmailBody`                                                                        | Assemble le corps HTML complet avec identité visuelle (en-tête/pied de page, bloc d'informations du tenant, liste des pièces jointes) à partir de HTML ou de Markdown — utile pour rendre et inspecter l'e-mail avant l'envoi. Accepte `-AccentColor`/`-TextColor`. |
| `Resolve-RjRbImageSource`                                                                        | Résout un chemin d'image d'en-tête/de pied de page vers sa source CID inline. Valide par signature de fichier et lève une erreur pour tout ce qui n'est pas un PNG, JPEG ou GIF.                                                                                    |

À l'exception de `Get-RjRbBrandingMailParams`, ceux-ci sont principalement destinés aux scénarios avancés/de test ; le chemin normal consiste à appeler `Send-RjRbReportEmail` directement.

## Voir aussi

* [Get-RjRbBrandingMailParams](/fr/dev-reference/report-functions/get-rjrbbrandingmailparams.md) — résolution des paramètres d'identité visuelle du tenant dans un runbook.
* [Runbook Report Settings](/fr/automatisation/runbooks/runbook-report-settings.md) — configuration centrale de la boîte aux lettres de l'expéditeur, des informations du service desk, de l'identité visuelle et du canal de livraison Storage Account.
* Microsoft Graph: [Envoyer un e-mail](https://learn.microsoft.com/en-us/graph/api/user-sendmail) — API sous-jacente.


---

# 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/fr/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.
