Guide

Email depuis la ligne de commande Linux sans SMTP

La plupart des outils e-mail en ligne de commande nécessitent un serveur SMTP local ou un relais comme Postfix ou sendmail, ou ne fonctionnent qu'avec un seul fournisseur. Nylas CLI envoie des e-mails depuis les terminaux Linux, Ubuntu, macOS et Windows avec OAuth2 intégré, sortie JSON et aucune configuration de serveur SMTP.

Written by Aaron de Mello Senior Engineering Manager

Reviewed by Caleb Geene

VerifiedCLI 3.1.1 · Gmail, Outlook, Yahoo · last tested April 11, 2026

Comment envoyer un e-mail depuis la ligne de commande Linux sans serveur SMTP ?

Nylas CLI envoie un e-mail depuis la ligne de commande Linux en une seule commande, sans serveur SMTP local, démon Postfix ni file sendmail. Elle s'authentifie une fois avec une clé API, puis envoie via HTTPS sur le port 443 à travers une API e-mail — pas de mot de passe SMTP dans votre historique shell. La même commande nylas email send s'exécute sans modification depuis un script bash, une tâche cron, un timer systemd ou un runner CI.

La commande mail est disponible sur les systèmes Unix depuis 1977, et mailx depuis le début des années 1980 — mais aucune ne prend en charge OAuth2. C'est un problème : Google a désactivé les mots de passe « applications moins sécurisées » pour Gmail en septembre 2024, et Microsoft a retiré l'authentification basique pour Exchange Online en octobre 2022. Si votre outil CLI ne gère pas le renouvellement des jetons OAuth2 (les jetons d'accès Gmail expirent toutes les 3 600 secondes selon la documentation OAuth 2.0 de Google), il ne peut pas envoyer d'e-mails de manière fiable via ces fournisseurs.

Nylas CLI contourne tout cela. Il communique directement avec l'API Nylas, qui gère le renouvellement des jetons OAuth2, l'abstraction des fournisseurs et la gestion des connexions. Authentifiez-vous une fois, puis les 72+ commandes fonctionnent avec Gmail, Outlook, Exchange, Yahoo, iCloud et IMAP sur toutes les plateformes.

Que signifie « envoyer un e-mail sans serveur SMTP » ?

Envoyer un e-mail sans serveur SMTP signifie que votre script ne se connecte pas à un MTA local, un hôte relais ou les ports SMTP du fournisseur tels que 25, 465 ou 587. Au lieu de cela, la CLI envoie via HTTPS sur le port 443 à travers une API authentifiée. Cela évite la configuration Postfix, les ports SMTP sortants bloqués, les mots de passe d'application et les identifiants relais dans les scripts shell.

C'est adapté aux serveurs Linux, aux tâches cron Ubuntu, aux runners GitHub Actions et aux sandboxes IA où SMTP est bloqué ou ne mérite pas d'être maintenu. Si un workflow doit seulement envoyer un rapport, une alerte, un message de test ou un e-mail de confirmation, configurer un serveur de messagerie complet représente une complexité opérationnelle inutile.

Comment envoyer un e-mail depuis la ligne de commande Ubuntu ?

Pour envoyer un e-mail depuis la ligne de commande Ubuntu, appelez nylas email send depuis bash, cron, les timers systemd ou la CI. La commande ne nécessite ni apt install postfix, ni mailutils, ni sendmail, ni configuration de relais SMTP. Consultez le guide de démarrage pour d'abord installer la CLI et connecter une boîte mail.

1. Envoi d'un e-mail

La commande nylas email send envoie un message via l'API Nylas en une seule invocation. Elle accepte --to, --subject et --body comme paramètres obligatoires, avec --cc et --bcc optionnels pour les destinataires supplémentaires. La CLI demande confirmation avant l'envoi sauf si vous passez --yes — utile dans les scripts sans terminal attaché. L'envoi s'effectue en moins de 3 secondes pour les messages jusqu'à 25 Mo.

nylas email send \
  --to "collègue@entreprise.fr" \
  --subject "Rapport trimestriel joint" \
  --body "Bonjour -- merci de relire les chiffres du T4 avant vendredi."

# Sauter la confirmation
nylas email send --to user@example.com --subject "Note rapide" --body "..." --yes

# CC et BCC
nylas email send \
  --to alice@equipe.fr \
  --cc bob@equipe.fr \
  --bcc directeur@equipe.fr \
  --subject "Mise à jour du sprint" \
  --body "Toutes les tâches sont dans les temps."

Après un envoi réussi, la CLI confirme la remise :

✓ Email sent successfully

  Message ID: abc123def456
  To: jamie@example.com
  Subject: Deployment complete
  Sent at: 2026-03-25T15:30:00-04:00

Peut-on envoyer un e-mail depuis la ligne de commande sous Linux, macOS ou Windows ?

Oui. La même syntaxe nylas email send fonctionne sous Linux, Ubuntu, macOS, Windows PowerShell, WSL et les runners CI une fois la CLI configurée. Les recherches comme envoyer un e-mail depuis la ligne de commande Mac et envoyer un e-mail depuis la ligne de commande Windows sont des variantes du même workflow propres à chaque plateforme : le message part via HTTPS au lieu de SMTP, quelle que soit la plateforme.

Si vous devez envoyer des e-mails depuis la ligne de commande Linux avec des pièces jointes, gardez le flux d'envoi de cette page et consultez la nylas email send référence de commande pour les flags exacts supportés par votre version installée. La différence opérationnelle importante : le message passe toujours par l'API du fournisseur, pas par un relais Postfix ou SMTP local.

L'accès à la boîte de réception depuis le terminal couvre quatre opérations : lister les messages récents, filtrer par état de lecture, rechercher par mot-clé et lire le corps des messages individuels. La commande nylas email list affiche les 50 messages les plus récents par défaut. Ajoutez --unread pour filtrer les non-lus uniquement, ou --limit pour contrôler le nombre de résultats (maximum 200 par requête).

# Lister les e-mails récents
nylas email list --limit 10

# Uniquement les non-lus
nylas email list --unread

# Rechercher par mot-clé
nylas email search "facture" --limit 5

# Lire un message spécifique
nylas email read msg_abc123

# Afficher le source MIME brut
nylas email read msg_abc123 --mime

L'ajout de --json à toute commande de liste produit du JSON conforme RFC 8259, que vous pouvez filtrer avec jq ou transmettre directement à un agent IA. Chaque objet message contient 12 champs : id, grant_id, thread_id, subject, from, to, snippet, date, unread, starred, folders et object.

nylas email list --limit 1 --json
[
  {
    "id": "a1b2c3d4e5f6g7h8",
    "grant_id": "d3f4a5b6-c7d8-9e0f-a1b2-c3d4e5f6g7h8",
    "thread_id": "a1b2c3d4e5f6g7h8",
    "subject": "Re : Projet Atlas — calendrier de lancement T2",
    "from": [{"name": "Sarah Chen", "email": "sarah@example.com"}],
    "to": [{"name": "Alex Rivera", "email": "alex@example.com"}],
    "snippet": "L'environnement de staging est prêt. Les résultats des tests de vendredi sont en pièce jointe...",
    "date": "2026-03-25T14:22:18-04:00",
    "unread": true,
    "starred": false,
    "folders": ["INBOX"],
    "object": "message"
  }
]

3. Planification d'e-mails différés

La planification d'e-mails met un message en file d'attente côté serveur pour un envoi futur sans garder votre terminal ouvert. Le flag --schedule accepte des durées relatives comme 2h ou 30m, des heures en langage naturel comme "tomorrow 9am" et des horodatages ISO 8601. Les messages planifiés supportent des délais de 1 minute à 30 jours, et vous pouvez annuler un envoi planifié avant sa fenêtre de remise en supprimant le brouillon.

# Envoyer dans 2 heures
nylas email send --to team@company.com --subject "Rappel" --body "..." --schedule 2h

# Envoyer demain matin
nylas email send --to team@company.com --subject "Standup" --body "..." --schedule "tomorrow 9am"

# Envoyer à une date précise
nylas email send --to client@example.com --subject "Relance" --body "..." --schedule "2026-03-01 14:30"

4. Suivi des ouvertures et des clics

Le suivi des ouvertures et des clics intègre un pixel de tracking 1x1 et réécrit les liens pour que l'API Nylas enregistre les événements d'engagement. Le flag --track-opens active le tracking par pixel, --track-links encapsule chaque URL dans une redirection, et --track-label attribue un tag de campagne pour le filtrage. Les événements de tracking se déclenchent dans les 5 secondes suivant l'action du destinataire et arrivent sous forme de payloads webhook sur les triggers message.opened et message.link_clicked.

nylas email send \
  --to prospect@entreprise.fr \
  --subject "Proposition jointe" \
  --body "Voici notre proposition pour le T2." \
  --track-opens \
  --track-links \
  --track-label "prospection-t2"

# Les événements de tracking sont livrés par webhook :
nylas webhook create \
  --url https://your-server.com/hooks \
  --triggers message.opened,message.link_clicked

5. Signature et chiffrement avec GPG

La signature et le chiffrement GPG fonctionnent nativement — aucun outil supplémentaire au-delà d'un trousseau GPG. La CLI implémente RFC 3156 PGP/MIME, avec environ 200 millisecondes de surcharge par message pour la signature et 400 millisecondes pour le chiffrement. Les clés publiques sont automatiquement récupérées depuis les serveurs de clés lors du premier chiffrement vers un destinataire :

# Signer avec votre clé GPG
nylas email send --to juridique@partenaire.fr --subject "Contrat" --body "..." --sign

# Chiffrer avec la clé publique du destinataire (récupérée automatiquement)
nylas email send --to juridique@partenaire.fr --subject "Contrat" --body "..." --encrypt

# Les deux (recommandé pour une sécurité maximale)
nylas email send --to juridique@partenaire.fr --subject "Contrat" --body "..." --sign --encrypt

# Déchiffrer et vérifier un message reçu
nylas email read msg_xyz789 --decrypt --verify

Consultez le guide complet sur les e-mails chiffrés GPG pour la gestion des clés, le dépannage et le chiffrement multi-destinataires.

6. Rédaction assistée par IA

Smart Compose génère des brouillons d'e-mails à partir d'une consigne en langage naturel sans quitter le terminal. La commande nylas email smart-compose envoie votre consigne au point d'accès IA de Nylas et renvoie un brouillon formaté en moins de 2 secondes. Passez --message-id pour générer une réponse contextuelle à un fil de discussion spécifique. La sous-commande ai analyze analyse les messages non lus et renvoie des résumés, catégories et niveaux d'urgence.

# Générer un brouillon à partir d'une consigne
nylas email smart-compose --prompt "Remercie-les pour la réunion et confirme les prochaines étapes"

# Générer une réponse à un message spécifique
nylas email smart-compose --message-id msg_abc123 --prompt "Accepte l'invitation poliment"

# Analyse IA de la boîte de réception
nylas email ai analyze --unread
# => Résumé, catégories, actions à mener, niveaux d'urgence

7. Scripts et automatisation

Le scripting shell avec Nylas CLI transforme les opérations e-mail en briques composables. Chaque sous-commande supporte --json, qui produit des données structurées que vous pouvez rediriger vers jq, awk ou tout autre outil de traitement. L'exemple ci-dessous montre un script de résumé matinal de la boîte de réception qui compte les messages non lus, signale les urgents par mots-clés dans l'objet, et envoie des e-mails personnalisés en masse depuis un fichier CSV. Un sleep de 2 secondes entre les envois CSV évite d'atteindre la limite par défaut de 50 requêtes par minute.

# Script de résumé matinal de la boîte de réception
#!/bin/bash
echo "=== Résumé boîte de réception ==="
unread=$(nylas email list --unread --json | jq length)
echo "Non lus : $unread"

# Vérification d'urgence
nylas email list --unread --json \
  | jq '[.[] | select(.subject | test("urgent|asap"; "i"))]' \
  | jq 'length' \
  | xargs -I{} echo "Urgents : {}"

# Envoi en masse depuis un CSV
while IFS=, read -r email name; do
  nylas email send \
    --to "$email" \
    --subject "Bonjour $name" \
    --body "Votre compte est prêt." \
    --yes
  sleep 2
done < contacts.csv

8. Transmission aux agents IA

La redirection de la sortie CLI vers des agents IA transforme le terminal en couche d'automatisation e-mail. Chaque sous-commande nylas email supporte --json, qui produit du JSON conforme RFC 8259 que les agents peuvent analyser sans transformation. Vous pouvez transmettre les données de la boîte de réception à un agent de triage, générer des réponses avec un LLM ou installer le serveur MCP intégré pour que des outils comme Claude Code et Cursor appellent les commandes CLI directement.

# L'agent trie votre boîte de réception
nylas email list --unread --json | agent triage --rules ./regles-boite.yml

# L'agent rédige une réponse, la CLI l'envoie
nylas email send \
  --to sarah@team.io \
  --subject "Re : Relance" \
  --body "$(agent draft --context msg_a1f2)" \
  --yes

# Démarrer le serveur MCP intégré pour Claude, Cursor ou VS Code
nylas mcp install --assistant claude-code

Model Context Protocol (MCP) permet aux assistants IA d'appeler directement les outils CLI. Consultez le guide d'accès e-mail pour agents IA pour la configuration MCP et des outils.

9. Tâches cron, here-docs et automatisation shell

L'automatisation e-mail par cron permet d'envoyer des alertes planifiées, des rapports et des vérifications de santé sans daemon ni interface graphique. Les here-docs Bash résolvent le problème du corps multiligne — cat <<'EOF' transmet du texte arbitraire à --body sans échapper les guillemets ni les retours à la ligne. La CLI termine avec le code 0 en cas de succès et un code non nul en cas d'erreur, donc encapsuler les envois dans des blocs if ! offre aux tâches cron une gestion d'erreurs fiable. Une entrée cron typique de rapport nocturne ajoute environ 4 lignes à votre crontab.

# Here-doc pour les corps d'e-mail longs dans les scripts shell
nylas email send \
  --to ops@entreprise.fr \
  --subject "Rapport de sauvegarde nocturne" \
  --body "$(cat <<'EOF'
Sauvegardes terminées avec succès.

- Cluster : prod-a
- Durée : 18m
- Âge du snapshot : 24h
EOF
)" \
  --yes

Pour les tâches cron, encapsuler l'envoi dans un bloc if ! garantit que les erreurs remontent au lieu de disparaître silencieusement. La CLI renvoie le code de sortie 1 en cas d'erreurs d'authentification, de délais réseau et de rejets au niveau de l'API.

# Vérification compatible cron avec gestion d'erreurs explicite
if ! nylas email send --to alertes@entreprise.fr --subject "Alerte disque" --body "Utilisation disque > 90%" --yes; then
  echo "échec de l'envoi" >&2
  exit 1
fi

10. Remplacement de mailx, sendmail et Postfix

Remplacer mailx, sendmail ou Postfix par Nylas CLI élimine entièrement la pile MTA locale. Un relais Postfix nécessite la maintenance de certificats TLS, la gestion d'une file de courrier et la surveillance d'un daemon permanent — environ 15 à 20 fichiers de configuration dans /etc/postfix/ pour un déploiement en production. La commande mailx dépend d'un MTA fonctionnel en dessous, et la syntaxe de configuration de sendmail (sendmail.cf) n'a pas changé significativement depuis les années 1990. La CLI remplace tout cela par un seul binaire et une clé API.

Si vos scripts envoient actuellement du texte via mailx -s "objet" user@example.com, la migration est simple : remplacez mailx par nylas email send --to user@example.com --subject "objet" --body "$(cat)". Pas de relais, pas de file d'attente, pas de daemon à redémarrer après les modifications de configuration.


Comment Nylas CLI se compare aux autres outils e-mail en CLI ?

Fonctionnalitémail / mailxmuttNylas CLI
Envoyer un e-mailOui (nécessite MTA)Oui (nécessite SMTP)Oui (une commande)
Lire la boîte de réceptionLocal uniquementOuiOui
Gmail OAuth2NonComplexeIntégré
Microsoft 365NonComplexeIntégré
GPG signature/chiffrementManuelIntégréIntégré
Accès calendrierNonNonOui
Sortie JSONNonNonOui (--json)
Rédaction IANonNonOui
Serveur MCPNonNonIntégré

Prochaines étapes