> 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/es/dev-reference/report-functions/get-rjrbbrandingmailparams.md).

# Get-RjRbBrandingMailParams

Convierte la configuración del Tenant RJReport.Branding en parámetros listos para usar para Send-RjRbReportEmail.

## Descripción general

`Get-RjRbBrandingMailParams` salva la distancia entre la configuración central [de branding de correo electrónico](/es/automatizacion/runbooks/runbook-report-settings.md#email-branding-optional) y [`Send-RjRbReportEmail`](/es/dev-reference/report-functions/send-rjrbreportemail.md): la configuración contiene **URL**, la función de envío espera **rutas locales de archivos**. Esta función descarga las imágenes configuradas, las valida y devuelve una hashtable que puede expandirse directamente en la llamada de envío.

> **Disponible desde RealmJoin.RunbookHelper 0.8.9.** Las versiones anteriores del runbook incluían esta lógica como un helper en línea con el mismo nombre; esas copias se pueden eliminar una vez que la Automation Account ejecute la 0.8.9 o una versión posterior.

Reglas de diseño:

* **Nunca hace fallar el informe.** Cualquier problema — configuración vacía, URL no HTTPS, descarga fallida, archivo demasiado grande, imagen no válida, color mal formado — da lugar a una advertencia y a la omisión de esa única clave. Después, el correo se renderiza con el valor predeterminado correspondiente de RealmJoin.
* **Devuelve solo lo que se resolvió.** La hashtable devuelta contiene solo las claves que se resolvieron correctamente, por lo que expandirla nunca sobrescribe un valor predeterminado con un valor vacío.
* **Una descarga por ejecución.** Llámela una vez y reutilice el resultado para cada correo electrónico que envíe el runbook, incluso dentro de bucles que notifiquen a muchos usuarios.

## Inicio rápido

```powershell
$brandingMailParams = Get-RjRbBrandingMailParams `
    -HeaderImageUrl $BrandingHeaderImageUrl `
    -FooterImageUrl $BrandingFooterImageUrl `
    -FooterLink     $BrandingFooterLink `
    -AccentColor    $BrandingAccentColor `
    -TextColor      $BrandingTextColor

Send-RjRbReportEmail `
    -EmailFrom       $EmailFrom `
    -EmailTo         $EmailTo `
    -Subject         $Subject `
    -MarkdownContent $reportMd `
    @brandingMailParams
```

Sin branding configurado, `$brandingMailParams` es una hashtable vacía y la llamada se comporta exactamente como si se hubiera omitido el parámetro.

## Parámetros

Todos los parámetros son opcionales — la función está diseñada para llamarse con lo que el inquilino tenga configurado.

| Parámetro        | Tipo     | Predeterminado | Descripción                                                                                                                                                                          |
| ---------------- | -------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `HeaderImageUrl` | `string` | —              | URL pública HTTPS de la imagen de encabezado (`RJReport.Branding.HeaderImageUrl`).                                                                                                   |
| `FooterImageUrl` | `string` | —              | URL pública HTTPS de la imagen de pie de página (`RJReport.Branding.FooterImageUrl`).                                                                                                |
| `FooterLink`     | `string` | —              | URL de destino de la imagen de pie de página (`RJReport.Branding.FooterLink`). Se pasa tal cual, no se valida.                                                                       |
| `AccentColor`    | `string` | —              | Color de acento (`RJReport.Branding.AccentColor`). Se pasa tal cual; el formato hexadecimal lo valida `Send-RjRbReportEmail`.                                                        |
| `TextColor`      | `string` | —              | Color de texto (`RJReport.Branding.TextColor`). Mismo tratamiento que `AccentColor`.                                                                                                 |
| `TimeoutSec`     | `int`    | `30`           | Tiempo de espera de descarga por imagen.                                                                                                                                             |
| `MaxImageBytes`  | `long`   | `200 KB`       | Tamaño máximo aceptado de la imagen. Las imágenes de branding comparten el límite de \~4 MB con los archivos adjuntos del informe. `sendMail` con los archivos adjuntos del informe. |

## Salidas

Una `[hashtable]` que contiene solo las claves resueltas correctamente:

| Clave         | Valor                                               |
| ------------- | --------------------------------------------------- |
| `HeaderImage` | Ruta local de la imagen de encabezado descargada    |
| `FooterImage` | Ruta local de la imagen de pie de página descargada |
| `FooterLink`  | Enlace de pie de página recortado                   |
| `AccentColor` | Color de acento recortado                           |
| `TextColor`   | Color de texto recortado                            |

Cada clave se asigna a un parámetro de `Send-RjRbReportEmail`, lo que hace que el splatting sea seguro.

## Validación

Cada imagen pasa por las siguientes comprobaciones antes de aceptarse:

| Comprobación      | Motivo de rechazo                                                                                                                                                                        |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Esquema de la URL | Solo `https` se acepta — los bytes de la imagen acaban dentro del correo corporativo, así que se rechaza HTTP sin cifrar.                                                                |
| Descarga          | Las respuestas que no son 2xx, los tiempos de espera y los errores de red se capturan; el cuerpo de respuesta de un error de almacenamiento no se trata silenciosamente como una imagen. |
| Tamaño            | Los archivos vacíos y los archivos mayores que `MaxImageBytes` (predeterminado: 200 KB).                                                                                                 |
| Firma del archivo | Los primeros bytes deben identificar un PNG, JPEG o GIF. Se rechaza aquí una página de error HTML guardada bajo un `.png` nombre.                                                        |

Al archivo temporal se le asigna la extensión que coincida con su **detectado** formato, porque `Send-RjRbReportEmail` deduce de él el tipo de contenido del adjunto — por lo tanto, una URL sin extensión de archivo, o con una engañosa, funciona correctamente.

## Notas de comportamiento

### Hospedar las imágenes

La URL solo necesita ser accesible desde el entorno aislado de Azure Automation. Dos patrones comunes:

* **blob público o CDN** — lo más simple, pero las imágenes pueden ser leídas por cualquiera.
* **Contenedor privado con un SAS Token en la URL** — el contenedor sigue siendo privado y solo quienes tengan el enlace pueden leerlo. Recuerde que la expiración del SAS termina el branding en silencio: cuando vence, los informes siguen llegando con los valores predeterminados de RealmJoin y el motivo solo es visible como una advertencia en el registro del trabajo.

### Limpieza de archivos temporales

Las imágenes descargadas se escriben en el directorio temporal del entorno aislado. El entorno aislado se descarta después de la ejecución, así que la limpieza es opcional — pero los runbooks con una región de limpieza explícita deberían eliminarlas después del último correo electrónico:

```powershell
foreach ($brandingKey in @('HeaderImage', 'FooterImage')) {
    if ($brandingMailParams -and $brandingMailParams.ContainsKey($brandingKey) -and (Test-Path -LiteralPath $brandingMailParams[$brandingKey])) {
        Remove-Item -LiteralPath $brandingMailParams[$brandingKey] -Force -ErrorAction SilentlyContinue
    }
}
```

### Diagnóstico de un branding que no aparece

Cuando un informe llega con los gráficos predeterminados aunque el branding esté configurado, el registro del trabajo identifica la etapa que falló:

| Entrada del registro                                          | Causa                                                                                                                       |
| ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Sin `Branding:` ninguna entrada                               | La configuración nunca llegó al runbook — revise el JSON de personalización y si el portal conoce esta versión del runbook. |
| `Solo se admiten URL HTTPS`                                   | La URL usa `http://`.                                                                                                       |
| Un error de almacenamiento como `PublicAccessNotPermitted`    | La solicitud llegó sin autenticación — el SAS Token falta en la URL, a menudo porque se truncó al copiarlo.                 |
| `supera el límite de … para imágenes insertadas en el correo` | El archivo es mayor que `MaxImageBytes`.                                                                                    |
| `no es una imagen PNG, JPEG o GIF`                            | La descarga devolvió algo distinto de una imagen, normalmente una página de error.                                          |

## Véase también

* [Send-RjRbReportEmail](/es/dev-reference/report-functions/send-rjrbreportemail.md) — el consumidor de los parámetros devueltos.
* [Configuración del informe del runbook](/es/automatizacion/runbooks/runbook-report-settings.md#email-branding-optional) — configurando las `RJReport.Branding.*` configuraciones como administrador.


---

# 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/es/dev-reference/report-functions/get-rjrbbrandingmailparams.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.
