Un outil Python sans dépendance qui vous permet d'envoyer des e-mails à partir de la ligne de commande à l'aide de Gmail SMTP. Installez avec une seule commande, configurez une fois et envoyez des e-mails à partir de scripts, de workflows d'automatisation ou d'agents IA.
Le problème
L'envoi d'e-mails depuis la ligne de commande est traditionnellement pénible :
- Configuration complexe : La configuration de sendmail, postfix ou msmtp nécessite des modifications au niveau du système
- Problèmes de délivrabilité : Les serveurs de messagerie auto-hébergés atterrissent souvent dans des dossiers spam
- Fragmentation de la plateforme : Différents outils pour différents systèmes d'exploitation
- L'enfer des dépendances : De nombreuses solutions nécessitent l'installation de bibliothèques supplémentaires
J'avais besoin d'un moyen simple d'envoyer des e-mails à partir de scripts d'automatisation, d'agents IA et de pipelines CI/CD sans avoir à me soucier de la configuration du serveur de messagerie. Les serveurs SMTP de Gmail ont une excellente délivrabilité et les mots de passe d'application fournissent une authentification sécurisée sans exposer le mot de passe de votre compte principal.
La solution
gmail-cli est un fichier Python unique sans dépendance externe qui fonctionne sur n'importe quel système avec Python 3. Il utilise les serveurs SMTP de Gmail pour une livraison fiable et stocke les informations d'identification en toute sécurité dans votre répertoire personnel.
Installation sur une seule ligne
macOS/Linux
curl -sSL https://colinknapp.com/tools/gmail-cli/install.sh | bash
Windows PowerShell
iwr -useb https://colinknapp.com/tools/gmail-cli/install.ps1 | iex
Le programme d'installation télécharge le script dans ~/.local/bin (Unix) ou %LOCALAPPDATA%\gmail-cli (Windows) et l'ajoute à votre PATH.
Configuration : mot de passe de l'application Gmail
Gmail nécessite un mot de passe d'application pour l'accès SMTP (votre mot de passe habituel ne fonctionnera pas avec 2FA activé). Voici comment en configurer un :
- Aller à moncompte.google.com/apppasswords
- Activez la vérification en deux étapes si vous ne l'avez pas déjà fait
- Générer un mot de passe d'application pour "Mail"
- Courir
gmail-cli configureet entrez votre adresse Gmail et le mot de passe de l'application
gmail-cli configure
Gmail CLI Configuration
----------------------------------------
You'll need a Gmail App Password:
1. Go to https://myaccount.google.com/apppasswords
2. Enable 2-Step Verification if needed
3. Generate an App Password for 'Mail'
Gmail address: yourname@gmail.com
App Password (will be stored locally): xxxx xxxx xxxx xxxx
Configuration saved to /home/user/.config/gmail-cli/config.json
Exemples d'utilisation
E-mail simple
gmail-cli send recipient@example.com -s "Hello" -b "Hi there!"
E-mail avec pièces jointes
gmail-cli send recipient@example.com \
-s "Weekly Report" \
-b "Please find the report attached." \
-a report.pdf \
-a data.csv
Piper le contenu depuis stdin
cat logfile.txt | gmail-cli send admin@example.com -s "Server Logs"
Tester la connexion
gmail-cli test
Testing connection for yourname@gmail.com...
Success! Connection and authentication working.
Cas d'utilisation réel : e-mail d'agent IA
J'ai créé cet outil spécifiquement pour une utilisation avec des agents de codage IA comme Cursor. Lorsque j'ai besoin d'envoyer un e-mail avec des pièces jointes PDF, l'agent IA peut le composer et l'envoyer directement :
gmail-cli send recipient@example.com \
-s "Documents Attached" \
-b "Hi,
Please find the requested documents attached.
Best regards,
Your Name" \
-a document1.pdf \
-a document2.pdf
Cela permet une automatisation de bout en bout : l'IA peut générer des documents, créer des PDF et les envoyer par e-mail sans intervention humaine.
Mise en œuvre technique
Architecture
- Fichier unique : Aucune dépendance au-delà de la bibliothèque standard de Python 3
- SMTP sur TLS : Connexion sécurisée à smtp.gmail.com:587
- Configuration locale : Informations d'identification stockées dans
~/.config/gmail-cli/config.jsonavec 600 autorisations - Prise en charge MIME : Messages en plusieurs parties appropriés pour les pièces jointes
Considérations de sécurité
- Utilise les mots de passe de l'application Gmail (pas votre mot de passe principal)
- Le fichier de configuration a des autorisations restreintes (Unix : 600)
- Cryptage TLS pour toutes les communications SMTP
- Les mots de passe des applications peuvent être révoqués individuellement sans affecter votre compte principal
Prise en charge multiplateforme
L'outil gère automatiquement les différences de plate-forme :
- macOS/Linux : Configuration dans
~/.config/gmail-cli/, installé sur~/.local/bin/ - Fenêtres : Configuration dans
%APPDATA%\gmail-cli\, installé sur%LOCALAPPDATA%\gmail-cli\avec un wrapper .bat
Référence des commandes
| Commande | Descriptif |
|---|---|
gmail-cli configure |
Configurer les informations d'identification Gmail (interactives) |
gmail-cli configure --email x --password y |
Définir les informations d'identification de manière non interactive |
gmail-cli send TO -s SUBJ -b BODY |
Envoyer un email |
gmail-cli send TO -s SUBJ -a FILE |
Envoyer avec pièce(s) jointe(s) |
gmail-cli test |
Tester la connexion SMTP |
gmail-cli config |
Afficher la configuration actuelle |
Intégration avec l'automatisation
gmail-cli fonctionne de manière transparente avec :
- Scripts shell : Envoyer des notifications à partir de tâches cron ou créer des scripts
- Pipelines CI/CD : Rapports de déploiement par e-mail ou résultats de tests
- Agents IA : Permettez aux assistants basés sur LLM d'envoyer des e-mails en votre nom
- Surveillance : Alerte sur les événements système ou les dépassements de seuils
Exemple : rapport de sauvegarde quotidien
#!/bin/bash
# backup-report.sh - Run daily via cron
BACKUP_LOG="/var/log/backup.log"
RECIPIENT="admin@example.com"
if [ -f "$BACKUP_LOG" ]; then
cat "$BACKUP_LOG" | gmail-cli send "$RECIPIENT" \
-s "Daily Backup Report - $(date +%Y-%m-%d)"
fi
Pourquoi ne pas utiliser les outils existants ?
| Alternative | Problème |
|---|---|
| envoyermail/postfix | Nécessite des problèmes de racine, de configuration complexe et de délivrabilité |
| msmtp | Dépendance externe, syntaxe du fichier de configuration |
| mailx/mail | Spécifique à la plate-forme, nécessite un MTA local |
| Python smtplib directement | Code passe-partout, pas d'interface CLI |
gmail-cli offre la simplicité d'un outil CLI avec la fiabilité de l'infrastructure de Gmail, le tout dans un package sans dépendance qui fonctionne partout où Python s'exécute.
Observations
- Les installations en une seule ligne fonctionnent : Le
curl | bashCe modèle, bien que controversé, réduit considérablement les frictions pour les outils de développement - Gmail SMTP est fiable : Les serveurs de Google ont une excellente délivrabilité et une excellente disponibilité
- Les mots de passe des applications sont sous-estimés : Ils fournissent un accès limité sans exposer vos informations d'identification principales
- Questions multiplateformes : Un outil qui fonctionne de manière identique sur macOS, Linux et Windows permet d'économiser de la documentation et des efforts d'assistance
- Les agents IA ont besoin d'un e-mail : À mesure que l’automatisation basée sur LLM se développe, le simple courrier électronique programmatique devient de plus en plus précieux.
Get Started
Installez gmail-cli et commencez à envoyer des emails depuis votre terminal :
# Install (macOS/Linux)
curl -sSL https://colinknapp.com/tools/gmail-cli/install.sh | bash
# Configure
gmail-cli configure
# Send your first email
gmail-cli send yourself@gmail.com -s "Test" -b "It works!"