gmail-cli : e-mail multiplateforme à partir de la ligne de commande

Rôle : Développeur

Technologies : Python 3, Gmail SMTP, CLI multiplateforme

Plateformes : macOS, Linux, Windows

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 :

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 :

  1. Aller à moncompte.google.com/apppasswords
  2. Activez la vérification en deux étapes si vous ne l'avez pas déjà fait
  3. Générer un mot de passe d'application pour "Mail"
  4. Courir gmail-cli configure et 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

Considérations de sécurité

Prise en charge multiplateforme

L'outil gère automatiquement les différences de plate-forme :

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 :

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

  1. Les installations en une seule ligne fonctionnent : Le curl | bash Ce modèle, bien que controversé, réduit considérablement les frictions pour les outils de développement
  2. Gmail SMTP est fiable : Les serveurs de Google ont une excellente délivrabilité et une excellente disponibilité
  3. Les mots de passe des applications sont sous-estimés : Ils fournissent un accès limité sans exposer vos informations d'identification principales
  4. 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
  5. 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!"