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 ?

Utilisez une CLI qui envoie via une API e-mail authentifiée au lieu d'un MTA local. Avec Nylas CLI, le workflow Linux tient en une installation, une authentification et une commande nylas email send. Pas de démon Postfix, pas de file sendmail, pas de mot de passe SMTP dans votre historique shell.

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, installez la CLI, authentifiez la boîte mail une fois et 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.

1. Installation

L'installation de Nylas CLI prend moins de 60 secondes sur macOS, Linux ou WSL. Homebrew est la méthode la plus rapide — il télécharge un binaire précompilé avec vérification SHA-256, sans étape de compilation. L'option Go compile depuis les sources et nécessite Go 1.23 ou ultérieur. Les deux méthodes placent automatiquement le binaire nylas dans votre $PATH.

# macOS / Linux (Homebrew)
brew install nylas/nylas-cli/nylas

# Ou compiler depuis les sources (nécessite Go 1.23+)
go install github.com/nylas/cli/cmd/nylas@latest

2. Authentification de votre boîte mail

L'authentification prend moins de 60 secondes. Créez une application sur dashboard-v3.nylas.com, connectez votre boîte mail via OAuth et copiez votre clé API. La CLI stocke les identifiants dans le trousseau de votre système (macOS Keychain, GNOME Keyring ou Windows Credential Manager), chiffrés au repos. Exécutez ceci une fois — les 72 commandes utilisent les mêmes identifiants enregistrés :

nylas auth config
# Collez votre clé API lorsqu'on vous le demande

# Vérifiez la connexion
nylas auth whoami
# => Authenticated as you@company.com (Google Workspace)

La commande nylas auth config enregistre les identifiants dans votre trousseau système. Vous pouvez vérifier la connexion à tout moment :

Authentication Status

Current Account:
  Email: dev@example.com
  Provider: google
  Grant ID: d3f4a5b6-c7d8-9e0f-a1b2-c3d4e5f6g7h8
  Status: ✓ Valid

Configuration:
  Region: us
  Config Path: /home/dev/.config/nylas/config.yaml
  Secret Store: system keyring

3. 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 installée et authentifié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 : installer le binaire, authentifier la boîte mail, puis envoyer via HTTPS au lieu de SMTP.

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"
  }
]

5. 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"

6. 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

7. 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.

8. 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

9. 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

10. 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.

11. 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

12. 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