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
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@latest2. 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 keyring3. 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:00Peut-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.
4. Lecture et recherche dans votre boîte de réception
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 --mimeL'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_clicked7. 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 --verifyConsultez 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'urgence9. 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.csv10. 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-codeModel 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
)" \
--yesPour 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
fi12. 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 / mailx | mutt | Nylas CLI |
|---|---|---|---|
| Envoyer un e-mail | Oui (nécessite MTA) | Oui (nécessite SMTP) | Oui (une commande) |
| Lire la boîte de réception | Local uniquement | Oui | Oui |
| Gmail OAuth2 | Non | Complexe | Intégré |
| Microsoft 365 | Non | Complexe | Intégré |
| GPG signature/chiffrement | Manuel | Intégré | Intégré |
| Accès calendrier | Non | Non | Oui |
| Sortie JSON | Non | Non | Oui (--json) |
| Rédaction IA | Non | Non | Oui |
| Serveur MCP | Non | Non | Intégré |
Prochaines étapes
- Envoyer un e-mail Gmail depuis la ligne de commande -- workflow d'envoi spécifique à Gmail sans code client API
- Envoyer un e-mail Outlook depuis la CLI -- modèles spécifiques à Microsoft 365 et Exchange
- Envoyer un e-mail Yahoo depuis la CLI -- sans mots de passe d'application ni configuration SMTP
- Envoyer un e-mail iCloud depuis la CLI -- domaines personnalisés, Masquer mon adresse e-mail, sans mots de passe d'application
- Envoyer un e-mail depuis PowerShell -- modèles, planification et scripts spécifiques à PowerShell
- Envoyer un e-mail depuis Python sans SMTP -- envoi par subprocess sans mots de passe d'application ni Postfix
- Notifications e-mail GitHub Actions -- alertes d'échec CI avec les secrets de workflow
- Extraction de signatures e-mail depuis la CLI -- gérer les signatures et envoyer avec des IDs de signature
- Rechercher des e-mails depuis le terminal -- comparer la syntaxe de recherche Gmail, Graph et IMAP
- Automatiser les rapports e-mail depuis le terminal -- résumés quotidiens et digests hebdomadaires avec cron
- Paramètres SMTP Gmail 2026 -- ports, TLS, mots de passe d'application, OAuth et limites d'envoi
- Comparatif des outils e-mail CLI -- choisir entre mailx, mutt, msmtp, swaks et une CLI e-mail multi-fournisseurs
- CLI agent IA pour e-mail et calendrier -- transformer les commandes e-mail et calendrier en outils JSON pour agents LLM
- Lister les e-mails Gmail -- lire et rechercher votre boîte Gmail depuis le terminal
- Lister les e-mails Exchange -- Exchange Online et on-prem avant la dépréciation EWS
- Lister les e-mails IMAP -- Fastmail, Zoho, auto-hébergé et FAI
- Gérer votre calendrier depuis le terminal -- événements, planification, outils de fuseaux horaires
- Recevoir des e-mails entrants -- adresses gérées et webhooks
- Planifier des e-mails depuis le terminal -- mettre des messages en file pour envoi différé avec --schedule
- Référence complète des commandes -- chaque flag et sous-commande documentés