# Nœud Send Email

Envoyez un email depuis un workflow — une confirmation après un webhook, un rapport quotidien depuis une planification, une alerte quand un guardrail se déclenche. Le nœud se trouve dans la catégorie **Integrations** de la palette et envoie via un **credential mail** que vous choisissez sur le nœud.

## Configuration

| Champ | Description |
| --- | --- |
| **Label** | Nom affiché sur le canvas. |
| **Mailbox** | Le credential mail utilisé pour l'envoi (`gmail`, `smtp`, ou `agent_builder_mail`). Un bouton **Connect Gmail** à côté de la liste permet d'autoriser un compte Gmail sans quitter le nœud. |
| **To** | Adresse(s) destinataire(s). Plusieurs destinataires séparés par des virgules ou points-virgules. Supporte les templates : `{event.body.email}`. |
| **Subject** | Objet. Supporte les templates. |
| **Body format** | `Plain text` ou `HTML`. Le mode HTML ajoute automatiquement une partie texte de repli. |
| **Body** | Corps du message. Supporte les templates : `{last_output}`, `{outputs.<node-id>.parsed.<champ>}`, `{state.clé}`… |
| **Attach upstream generated file** | Activé par défaut. Quand ce nœud suit directement **Generate file**, l'artefact généré est attaché à l'email et son URL signée est remplacée dans le corps. |

Chaque champ texte supporte l'autocomplétion `{` : tapez `{` et choisissez parmi les variables disponibles à ce point du graphe.

### Plusieurs destinataires

Séparez les adresses du champ **To** par des virgules ou des points-virgules :

```text
modou@example.com, awa@example.com, support@example.com
```

Vous pouvez combiner des adresses fixes et des templates :

```text
{event.body.email}; support@systalink.sn
```

Le nœud propose trois champs de destinataires :

- **To** : destinataires principaux, visibles par tout le monde.
- **CC** : destinataires recevant une copie visible.
- **BCC / CCI** : destinataires recevant une copie cachée ; leurs adresses ne sont pas montrées aux autres destinataires.

Chaque champ accepte une ou plusieurs adresses séparées par des virgules ou des points-virgules et prend en charge les templates. Pour un envoi entièrement individuel, fournissez la liste des destinataires à **Split In Batches** puis exécutez Send Email une fois par destinataire.

Exemple pour envoyer une confirmation, mettre le responsable de compte en copie et archiver discrètement le message :

```text
To :  {event.body.customer_email}
CC :  manager@example.com; {state.account_owner_email}
CCI : email-archive@example.com
```

Dans cet exemple, le client et le responsable de compte peuvent voir leurs adresses respectives. L'adresse d'archivage reçoit le message sans leur être visible. CC et BCC/CCI fonctionnent avec Gmail OAuth, un credential SMTP personnalisé et la boîte mail partagée de la plateforme.

## Providers de credentials mail

| Provider | Mode d'envoi | Mise en place |
| --- | --- | --- |
| `gmail` | API Gmail (`users.messages.send`) avec un token OAuth, auto-rafraîchi | Cliquez **Connect Gmail** dans le nœud (ou sur la page Credentials) et approuvez la popup |
| `smtp` | SMTP direct (`smtplib`) — STARTTLS par défaut, SSL implicite sur le port 465 | Créez un credential `Email — SMTP server` : host, port, username, adresse From, mot de passe (le secret) |
| `agent_builder_mail` | Boîte partagée de la plateforme via SMTP | Créez juste le credential — aucun secret à coller ; le serveur est configuré via `AGENT_BUILDER_SMTP_*` |

### Flow Connect Gmail

1. Ouvrez la config du nœud — la liste **Mailbox** affiche vos credentials mail existants.
2. Cliquez **Connect Gmail**. Une popup OAuth s'ouvre ; connectez-vous et approuvez le scope `gmail.send`.
3. Le credential est créé automatiquement et **auto-sélectionné** sur le nœud.

L'adresse *From* est toujours le compte Google authentifié. Les tokens se rafraîchissent automatiquement — pas de reconnexion à l'expiration de l'access token.

### Notes SMTP

- Le port **587** (défaut) utilise STARTTLS ; le port **465** bascule automatiquement en SSL implicite.
- Les détails de connexion (host, port, username, From) vivent dans les metadata du credential ; seul le mot de passe est stocké comme secret chiffré.
- Le bouton **Test** de la page Credentials ouvre la connexion et s'authentifie sans envoyer de mail.

## Templates en pratique

```text
To:      {event.body.email}
Subject: Votre ticket {outputs.classify-1.raw} a été reçu
Body:
Bonjour {event.body.name},

{outputs.agent-reply.raw}

Référence : {state.ticket_id}
```

## Pièces jointes Generate file

Quand **Generate file** est câblé directement vers **Send Email**, le runtime résout le fichier généré pour le propriétaire du workflow et l'ajoute comme vraie pièce jointe. Si le corps contient `{file_url}` ou l'URL du fichier amont, ce lien est remplacé par un marqueur de pièce jointe pour que le destinataire reçoive le fichier au lieu d'un lien temporaire.

```text
Generate file (format: csv, filename: report-{ts})
  → Send Email (body: "Le rapport est joint. Fallback: {file_url}")
```

Le corps reste un message normal et le CSV/PDF/XLSX/etc. est attaché. Désactivez **Attach upstream generated file** seulement si vous voulez volontairement envoyer l'URL signée.

## Ce que voient les nœuds aval

En cas de succès, `last_output` (et `{outputs.<node-id>.raw}`) vaut `Email sent to <destinataires>`.

En cas d'échec, le nœud n'arrête **pas** le run — comme HTTP Request, il écrit l'erreur dans `last_output`, préfixée `Send Email Error:`. Branchez dessus explicitement si la livraison est critique :

```text
Send Email → If/else (input contains "Send Email Error") → branche de repli
```

## Pièges

- **Aucun credential sélectionné** → `Send Email Error: no credential selected on this node.` Choisissez une Mailbox.
- **`agent_builder_mail` non configuré côté serveur** → le run signale que la boîte partagée n'est pas encore configurée. Utilisez `smtp` ou `gmail`, ou demandez à votre admin de définir `AGENT_BUILDER_SMTP_*`.
- **Gmail envoie depuis le compte connecté** — impossible de surcharger l'adresse From avec ce provider ; utilisez `smtp` pour un expéditeur personnalisé.
- **Emails HTML** : réglez Body format sur `HTML` — du HTML envoyé en mode texte affiche les balises littéralement.

---

*Source: https://agentbuilder.systalink.sn/docs/node-send-email — human documentation.*
*Other language: [/docs-md/en/node-send-email.md](/docs-md/en/node-send-email.md).*
*Machine-readable index: [/llms.txt](/llms.txt).*
