Notxor tiene un blog

Defenestrando la vida


Escribir un correo electrónico

Sí, desde Emacs también se pueden escribir ─y enviar─ correos electrónicos. Y esto te puede venir bien en cualquier momento como me ha sucedido a mí estos días que he estado fuera de casa. Lo que sucedió es que estaba en un lugar donde las conexiones no eran muy buenas... y torpe de mí, me dio por actualizar el ordenador creyendo que contaba con 4G. Sin embargo, algo debió ir mal en la actualización, o quizá tampoco fuera culpa de la conexión, el caso es que el programa que suelo utilizar para el correo electrónico, Thunderbird, dejó de funcionar.

El caso es que tenía que enviar un correo electrónico urgentemente, por cuestiones de trabajo. Y no había posibilidad de enviarlo por el método normal. El artículo de hoy va de uno de los paquetes que vienen instalados por defecto con nuestro querido Emacs: gnus. Un paquete que al ver su descripción parece destinado tan sólo para leer news y listas de correo, pero que también sirve para enviar correos.

Configuración mínima

La configuración que necesitas apenas son cuatro líneas de nuestro fichero init.el:

(setq send-mail-function 'smtpmail-send-it)
(setq smtpmail-smtp-user   "usuario@servidor.com")
(setq smtpmail-smtp-server "smtp.servidor.com")
(setq smtpmail-smtp-service 587)

Los nombres de las variables son suficientemente descriptivos. Comprueba esos datos en tu servidor de corro, es posible que tu proveedor utilice otro puerto y deberás poner el que corresponda en smtpmail-smtp-service para que funcione.

Una vez que hayas recargado el fichero init.el con la información de la configuración smtpmail, ya se podrán enviar mensajes. Emacs envía los mensajes utilizando el programa sendmail por defecto, aunque se pueden configurar otras herramientas. En mi caso, como lo que utilizo es sendmail no he tenido que configurar nada más.

También es posible leer el correo con gnus configurando la variable:

(setq read-mail-command 'gnus)

Pero no vamos a entrar en eso de momento, nos conformamos con poder enviar un correo ante unas prisas. Haz pruebas y envía un par de correos de prueba a alguna cuenta propia. El procedimiento es el siguiente:

  1. Lanza gnus con M-x gnus.
  2. Cuando aparezca el buffer de gnus pulsa m para escribir un nuevo mail. Aparecerá un buffer con el siguiente texto (o similar):

    To: 
    Subject: 
    From: Usuario <usuario@servidor.com>
    Gcc: nnfolder+archive:sent.2020-01
    --text follows this line--
    
  3. En la línea To: escribe la dirección de correo a la que quieras enviar el mensaje.
  4. En la línea Subject: escribe el asunto.
  5. Debajo de la línea --text follows this line-- escribe el contenido del mensaje.
  6. Añade algún adjunto con C-c C-a.
  7. Para enviarlo pulsa C-c C-c.

Todas esas acciones son accesibles también desde la barra de botones que tiene gnus para hacerlo.

Desde línea de comandos

¿Qué ocurre si tengo que enviar un correo electrónico y tampoco tengo Emacs para salir del apuro?

Si ese es el caso, es posible que tu sistema GNU/Linux tenga instalado el paquete mailx. En ese caso puedes utilizar el comando:

mailx -v -s "Esto es un correo de prueba" \
 -S smtp="smtp.servidor.com:587" \
 -S smtp-use-starttls \
 -S smtp-auth=login \
 -S smtp-auth-user="usuario@servidor.com" \
 -S smtp-auth-password="la-contraseña-que-sea" \
 -S ssl-verify=ignore \
 -r "Fulanito <usuario@servidor.com>" \
 -a ~/fichero.pdf \
 correo@al-que-enviar.com < mensaje.txt 

Lo he puesto en distintas líneas para que se aprecien las distintas opciones. En ese caso se puede apreciar que en la última línea se añade < mensaje.txt que implica que el texto del mensaje lo hemos escrito en ese fichero y volcamos su contenido al mailx. Entenderlo creo que es sencillo. Las opciones -S establecen diferentes variables, como el usuario y el password. La opción -r establece quién es el remitente y su correo, tal y como aparecerá en el mensaje. La opción -s establece el asunto del mensaje. La opción -a permite añadir adjuntos. Si no se carga con una pipeline el contenido del mensaje, mailx permite que lo escribamos de forma interactiva; al pulsar C-d termina la edición y envía el mensaje.

Conclusión

Se pueden enviar correos de muchas maneras: nuestro Emacs resulta una de ellas, pero no la única y nunca sabes cuándo vas a necesitar enviar un mensaje sin tener las herramientas gráficas más cómodas.


Comentarios

Debido a algunos ataques mailintencionados a través de la herramienta de comentarios, he decidido no proporcionar dicha opción en el Blog. Si alguien quiere comentar algo, me puede encontrar en Mastodon y en Diaspora con el nick de Notxor.

También se ha abierto un grupo en Telegram, para usuarios de esa red.

Disculpen las molestias.