Saltar al contenido principal

Envía correos desde la terminal: neocomposer está aquí

· 9 min de lectura
Oscar Adrian Ortiz Bustos

Última actualización: 19 de agosto de 2023 a las 0:46

Introducción

En la era moderna de la tecnología, el correo electrónico es una de las herramientas más utilizadas para la comunicación tanto personal como profesional. Aunque hay muchas aplicaciones de correo electrónico disponibles, la mayoría de ellas son aplicaciones de escritorio o móviles. Pero, ¿qué pasa si quieres enviar un correo electrónico desde la terminal? ¿Es posible? Sí, es posible. En este artículo, te presentaré una herramienta que desarrollé llamada Neocomposer, que te permite enviar correos electrónicos desde la terminal de una manera fácil y rápida, y lo mejor de todo, usando Neovim como editor de texto.

Nunca me ha gustado utilizar la web para enviar correos electrónicos, la considero bastante intrusiva y lenta. Hasta hace poco utilizaba Thunderbird que es el cliente de escritorio de Mozilla, aunque es sumamente fácil de usar y cuenta con la posibilidad de agregar extensiones, me parecía bastante lento y pesado. Por ende decidí crear mi propio cliente de correo electrónico, que me permitiera enviar correos electrónicos desde la terminal de una manera fácil y rápida.

¿Qué es Neocomposer?

En palabras simples, Neocomposer es un cliente de terminal que nos va a permitir enviar correos electrónicos de una manera sumamente sencilla. Sin interfaces gráficas, sin distracciones, solo tú y tu terminal. Neocomposer está escrito en Python y utiliza Neovim como editor de texto y Ranger como explorador de archivos, por lo que si ya estás acostumbrado a los atajos de Vim, te sentirás como en casa. Utiliza el protocolo SMTP para enviar correos electrónicos, por lo que podrás utilizar cualquier servidor SMTP que desees. En mi caso estoy usando el servidor SMTP de Gmail, pero puedes utilizar cualquier otro servidor SMTP.

Neovim

Desde mi punto de vista, Neovim es el mejor editor de texto que existe, básicamente es un vim al que le pusieron el suero del súper soldado, es sumamente rápido, ligero y además cuenta con una gran cantidad de extensiones que te permiten personalizarlo a tu gusto. Si aún no lo has probado, te recomiendo que lo hagas, estoy seguro que no te arrepentirás. Si deseas conocer más sobre Neovim, puedes visitar su página oficial. Si eres un usuario que como yo, utiliza el mouse lo menos posible, Neovim es para ti. La curva de aprendizaje es un poco alta, pero una vez que te acostumbras, no querrás utilizar otro editor de texto.

Este no es un artículo sobre Neovim, por lo que no me extenderé mucho, pero si deseas conocer más sobre este fantástico editor de texto podrías comentarlo en la sección de comentarios y quizás escriba un artículo posteriormente sobre él.

Ranger

Siguiendo mi filosofía de utilizar el mouse lo menos posible, utilizo ranger como gestor de archivos. Ranger es un gestor de archivos basado en la terminal, que te permite navegar por tus archivos y directorios de una manera fácil y rápida. Algunas de las características que más me gustan de ranger son las siguientes:

  • Pantalla de varias columnas con vista previa de archivos.
  • Podemos realizar acciones de archivos como copiar, mover, eliminar, etc.
  • Consola tipo Vim para realizar acciones en los archivos.
  • Navegación rápida con atajos de teclado.

En Neocomposer, utilizo ranger para seleccionar los archivos que deseo adjuntar a mi correo electrónico.

Si deseas conocer más sobre ranger, puedes visitar su página oficial.

Configuración SMTP

Está configuración no es la misma para todos los servidores SMTP, por lo que te recomiendo que leas la documentación de tu servidor SMTP para poder configurarlo correctamente. En mi caso estoy utilizando el servidor SMTP de Gmail, por lo que la configuración es la siguiente:

Servidor SMTP: smtp.gmail.com
Puerto: 587

Si deseas ver la configuración de otros servidores SMTP, puedes hacerlo en la siguiente página

Acceso a IMAP

Por defecto, Gmail no permite el acceso a IMAP, por lo que debemos activarlo.

Para ello, debemos ir a la configuración de nuestra cuenta de Gmail, le damos clic al engranaje que se encuentra en la parte superior derecha y seleccionamos Ver toda la configuración.

Configuración

En la sección de Reenvío y correo POP/IMAP debemos activar el acceso a IMAP.

IMAP

Con esta configuración, ya podemos utilizar Gmail como servidor SMTP. Sin embargo no hemos terminado, ya que Gmail por defecto no permite el acceso a este tipo de aplicaciones sin una Contraseña de aplicación.

Contraseñas de aplicación

Por defecto no podemos acceder a Gmail desde Neocomposer utilizando nuestra contraseña convencional, ya que Gmail no permite el acceso a este tipo de aplicaciones sin una Contraseña de aplicación. Por ende vamos a crearla.

Para eso vamos a darle clic a nuestra foto de perfil y seleccionamos Administrar cuenta de Google.

Una vez dentro nos vamos a la sección de Seguridad.

Seguridad

Ingresamos a la sección de Verificación en dos pasos y activamos la verificación en dos pasos.

Verificación

Posteriormente nos vamos a la sección de Contraseñas de aplicación y creamos una nueva contraseña de aplicación.

Contraseña

Tendremos que seleccionar la aplicación que deseamos utilizar y el dispositivo desde el cual deseamos acceder. En este caso seleccionaremos Correo y Otro respectivamente, al seleccionar Otro nos pedirá que ingresemos el nombre de la aplicación, en este caso ingresaremos Neocomposer. Posteriormente le damos clic en Generar.

Generar

Nos va a generar una contraseña de 16 caracteres, la cual debemos copiar y guardar, ya que no podremos verla nuevamente.

IMPORTANTE

Esa contraseña es la que utilizaremos para acceder a Gmail desde Neocomposer, por lo que debemos guardarla en un lugar seguro. Será la contraseña que utilizaremos en el archivo de configuración.

Y con esto ya podemos utilizar Gmail como servidor SMTP en Neocomposer.

Instalación Neocomposer

He creado un instalador en bash que se encarga de instalar Neocomposer y sus dependencias. Te recomiendo que le eches un vistazo al código antes de ejecutarlo, principalmente para que sepas que estás instalando en tu sistema. Puedes ver el código en el siguiente enlace.

Únicamente debemos ejecutar el siguiente comando en nuestra terminal:

wget -qO- https://raw.githubusercontent.com/4DRIAN0RTIZ/NeoComposer/main/install_neocomposer.sh | bash

Configuración Neocomposer

Dentro de la carpeta /home/<usuario>/.config/neocomposer se encontrará el archivo .env que tendrá la siguiente estructura:

SMTP_SERVER=
SMTP_PORT=
SENDER_EMAIL=
SENDER_PASSWORD=
SENDER_NAME=

Donde:

  • SMTP_SERVER: Es el servidor SMTP que utilizaremos para enviar el correo electrónico.
  • SMTP_PORT: Es el puerto del servidor SMTP que utilizaremos para enviar el correo electrónico.
  • SENDER_EMAIL: Es el correo electrónico que utilizaremos para enviar el correo electrónico.
  • SENDER_PASSWORD: Es la contraseña de aplicación que creamos anteriormente.
  • SENDER_NAME: Es el nombre que aparecerá en el correo electrónico.

Para ejecutar Neocomposer, únicamente debemos ejecutar el siguiente comando en nuestra terminal:

neocomposer

Uso Neocomposer

El uso es bastante intuitivo.

Primero vamos a escribir el correo electrónico al que deseamos enviar el correo.

Destinatario

Posteriormente el asunto.

Asunto

El cuerpo del correo.

Cuerpo

Nos preguntará si deseamos adjuntar algún archivo.

Adjunto

En caso de que la respuesta sea afirmativa, nos abrirá ranger para que seleccionemos los archivos que deseamos adjuntar.

Ranger

Nos preguntará si queremos agregar otro archivo adjunto. Y así sucesivamente hasta que respondamos que no.

Adjunto

Por último enviará el correo electrónico.

Enviando

Enviado

Próximas actualizaciones

El proyecto está en constante desarrollo, por lo que se irán agregando nuevas funcionalidades. Algunas de las funcionalidades que se agregarán próximamente son las siguientes:

  • Agenda de contactos.
  • Soporte para múltiples cuentas.
  • Soporte para plantillas de correo electrónico.
  • Historial de correos enviados.

Son bienvenidas las sugerencias y aportaciones al proyecto. Si tienes alguna idea puedes colocarla en los comentarios y con gusto la tomaré en cuenta.

Actualizaciones

Agenda de contactos

He implementado una agenda de contactos en un archivo JSON. La agenda de contactos se encuentra en la carpeta /home/<usuario>/.config/neocomposer y se llama agenda.json. La estructura del archivo es la siguiente:

{
"contactos": [
{
"nombre": "Nombre de contacto",
"correo": "Correo de contacto"
}
]
}

Para evitar la fatiga de tener que ingresar directamente en el archivo .json y a su vez evitar errores de sintaxis, he creado un script en bash que se encarga de agregar, modificar, eliminar y mostrar los contactos de la agenda. Se puede ingresar a la agenda ejecutando el siguiente comando en la terminal:

neocomposer -a

Al ejecutar el comando anterior, se mostrará un menú con las opciones disponibles, el cual se muestra a continuación:

AgendaOpciones

No me detendré a explicar cada una de las opciones, ya que son bastante intuitivas. En cuestión de formato no debemos preocuparnos, ya que el script se encarga de hacer las validaciones necesarias para que el archivo JSON no se corrompa.

Para hacer las operaciones sin tener problemas de sintaxis utilicé jq que es un procesador de JSON ligero y flexible. Para instalar jq en Ubuntu ejecutamos el siguiente comando en la terminal:

sudo apt install jq
IMPORTANTE

Si instalas neocomposer con el instalador que se encuentra en este post, jq se instalará automáticamente.

Ahora el flujo de neocomposer es el siguiente:

  1. Solicita que seleccione si es un destinatario de único uso o si es un contacto de la agenda.

neocomposerOpcion

Si seleccionamos Destinatario de único uso nos solicitará el nombre y el correo del destinatario. (Esto es lo mismo que se hacía antes de la actualización)

En caso de seleccionar Elegir un destinatario de la agenda nos mostrará la lista de contactos de la agenda.

Contactos

Como podemos ver nos enumera los contactos de la agenda y nos muestra el nombre y el correo del contacto. En caso de que no tengamos contactos en la agenda, nos mostrará un mensaje indicando que no hay contactos en la agenda (o directamente no mostrará nada).

Se debe de seleccionar el número del contacto al que deseamos enviar el correo electrónico.

Aquí continua el flujo normal de neocomposer (asunto, cuerpo, adjuntos, etc).

Conclusión

Neocomposer emerge como una solución eficiente y simplificada para aquellos que buscan una forma rápida y directa de enviar correos electrónicos directamente desde la terminal. En un panorama donde las aplicaciones de correo electrónico tradicionales pueden resultar intrusivas o pesadas, neocomposer ofrece una alternativa elegante al permitirnos redactar y enviar correos electrónicos a través de la terminal. Además, Neocomposer es una aplicación de código abierto, por lo que cualquiera puede contribuir a su desarrollo con un pull request en el repositorio de Github. Ahora con la agenda de contactos el flujo de neocomposer es más eficiente y sencillo, y cada vez se hace más robusto.