À propos du projet

sendsmtp est un petit client SMTP en ligne de commande implémenté en Python pur sans dépendance tierce. Il compose un message e-mail au format texte brut UTF-8 et le transmet à un serveur SMTP, ce qui l'utilisable pour des notifications par script, des rapports de build ou pour rediriger la sortie d'une commande vers un e-mail depuis un shell. Installation et prérequis Le paquet s'installe avec pip (python3 -m pip install --user --upgrade sendsmtp) et nécessite Python 3.11 ou une version plus récente. Utilisation de base La commande prend trois arguments positionnels : HOST (nom d'hôte ou IP du serveur SMTP), FROM (utilisé à la fois comme expéditeur de l'enveloppe SMTP et dans l'en-tête From) et TO (une adresse ou plusieurs adresses séparées par des virgules sans espaces autour de celles-ci). Une invocation typique envoie le corps avec -m et l'objet avec -s, et indique le succès lorsque le serveur accepte le message. Sources du corps du message Le corps peut provenir de trois sources. L'option -m/--message le fournit directement. L'option -i/--input le lit à partir d'un chemin de fichier et a priorités sur --message ; si le chemin n'est pas un fichier existant, l'option est ignorée et le corps se replie sur --message ou l'entrée standard (stdin). Si aucune option n'est fournie, le corps est lu depuis l'entrée standard : les données redirigées sont lues jusqu'à EOF, tandis qu'un terminal interactif déclenche une invite qui lit les lignes jusqu'à une ligne contenant uniquement EOF. Gestion de l'objet --subject/-s définit explicitement l'objet. S'il est omis et que le corps commence par une ligne Subject:, cette ligne est retirée du corps et utilisée comme objet à la place. Sécurité de la connexion et ports Le client prend en charge trois modes. Le SMTP en clair utilise par défaut le port 25. --starttls se connecte en texte clair et met à niveau la connexion à l'aide de l'extension STARTTLS, en utilisant par défaut le port 587. -t/--tls utilise un TLS implicite dès le premier octet (SMTPS), avec le port 465 par défaut. Les deux options TLS s'excluent mutuellement, et -p/--port remplace le port par défaut dans n'importe quel mode. Authentification -u/--username active l'authentification SMTP ; sans cela, aucune tentative d'authentification n'est effectuée. Si un nom d'utilisateur est fourni sans --password, le mot de passe est demandé de manière interactive sans écho. La documentation note que c'est préférable car les lignes de commande peuvent être visibles par d'autres processus et sont enregistrées dans l'historique du shell. Les échecs d'authentification interrompent l'exécution et le message n'est pas envoyé. Destinataires au-delà de TO -c/--cc ajoute des destinataires en copie carbone qui apparaissent dans l'en-tête CC et reçoivent le message. -b/--bcc ajoute des destinataires en copie carbone invisible qui reçoivent le message mais ne figurent dans aucun en-tête. Les deux acceptent des listes d'adresses séparées par des virgules. Diagnostics -v/--verbose affiche le dialogue SMTP sur stderr, rapporte les étapes de connexion et d'authentification, liste les adresses auxquelles le message a été délivré et, en cas d'échec, affiche la trace de pile complète au lieu d'une erreur sur une seule ligne. Sans cette option, les échecs produisent un message d'erreur d'une seule ligne. En-têtes de message et codes de sortie Les messages générés comportent les en-têtes From, To, Subject, CC (uniquement avec --cc) et X-Mailer: sendsmtp. Un code de sortie 0 signifie que le serveur a accepté le message pour tous les destinataires, 1 indique une erreur ou au moins un destinataire refusé, et 130 signale une interruption avec Ctrl-C. Licence Le projet est publié sous la licence MIT.