Sobre el proyecto
sendsmtp es un pequeño cliente SMTP de línea de comandos implementado en Python puro sin dependencias de terceros. Compone un mensaje de correo UTF-8 en texto plano y lo entrega a un servidor SMTP, lo que lo hace útil para notificaciones mediante scripts, informes de compilación o para redirigir la salida de comandos a un correo electrónico desde una terminal.
Instalación y requisitos
El paquete se instala con pip (python3 -m pip install --user --upgrade sendsmtp) y requiere Python 3.11 o posterior.
Uso básico
El comando acepta tres argumentos posicionales: HOST (nombre de host o IP del servidor SMTP), FROM (utilizado tanto como el remitente del sobre SMTP como la cabecera From) y TO (una dirección o varias direcciones separadas por comas sin espacios alrededor de las comas). Una invocación típica envía el cuerpo incrustado con -m y el asunto con -s, e informa del éxito cuando el servidor acepta el mensaje.
Fuentes del cuerpo del mensaje
El cuerpo puede provenir de tres lugares. La opción -m/--message lo proporciona de forma incrustada. La opción -i/--input lo lee desde la ruta de un archivo y tiene prioridad sobre --message; si la ruta no es un archivo existente, la opción se ignora y el cuerpo recurre a --message o a la entrada estándar (stdin). Si no se proporciona ninguna opción, el cuerpo se lee desde stdin: la entrada canalizada se lee hasta EOF, mientras que una terminal interactiva activa un mensaje que lee líneas hasta encontrar una línea que contenga únicamente EOF.
Gestión del asunto
--subject/-s establece el asunto explícitamente. Si se omite y el cuerpo comienza con una línea Subject:, dicha línea se elimina del cuerpo y se utiliza como asunto en su lugar.
Seguridad de la conexión y puertos
El cliente admite tres modos. SMTP sin cifrar utiliza por defecto el puerto 25. --starttls se conecta en texto plano y actualiza la conexión utilizando la extensión STARTTLS, utilizando por defecto el puerto 587. -t/--tls utiliza TLS implícito desde el primer byte (SMTPS), utilizando por defecto el puerto 465. Las dos opciones de TLS son mutuamente excluyentes, y -p/--port sobrescribe el puerto predeterminado en cualquier modo.
Autenticación
-u/--username habilita la autenticación SMTP; sin él no se realiza ningún intento de autenticación. Si se proporciona un nombre de usuario sin --password, se solicitará la contraseña de forma interactiva sin mostrar los caracteres. La documentación señala que esto es preferible porque las líneas de comandos pueden ser visibles para otros procesos y se registran en el historial de la terminal. Los errores de autenticación abortan la ejecución y el mensaje no se envía.
Destinatarios más allá de TO
-c/--cc añade destinatarios en copia carbón que aparecen en la cabecera CC y reciben el mensaje. -b/--bcc añade destinatarios en copia carbón oculta que reciben el mensaje pero no figuran en ninguna cabecera. Ambos aceptan listas de direcciones separadas por comas.
Diagnóstico
-v/--verbose imprime el diálogo SMTP en la salida de errores estándar (stderr), informa sobre los pasos de conexión y autenticación, enumera las direcciones a las que se entregó el mensaje y, en caso de fallo, muestra la traza de la pila completa en lugar de un error de una sola línea. Sin esta opción, los fallos producen un mensaje de error de una sola línea.
Cabeceras de mensajes y códigos de salida
Los mensajes generados incluyen las cabeceras From, To, Subject, CC (solo con --cc) y una cabecera X-Mailer: sendsmtp. El código de salida 0 significa que el servidor aceptó el mensaje para todos los destinatarios, el 1 indica un error o al menos un destinatario rechazado, y el 130 señala una interrupción con Ctrl-C.
Licencias
El proyecto se publica bajo la licencia MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.