LINUX

4 herramientas envían correo electrónico con asunto, cuerpo y adjunto en Linux

En el artículo de hoy, cubriremos algunas formas que puede utilizar para enviar correos electrónicos con archivos adjuntos desde la interfaz de línea de comandos en Linux. Puede tener bastantes usos, por ejemplo, para enviar un archivo con una aplicación desde un servidor de aplicaciones al correo electrónico o puede usar los comandos en scripts para automatizar algún proceso. Para nuestros ejemplos, usaremos el archivo foo.tar.gz como nuestro archivo adjunto.

Hay varias formas de enviar correos electrónicos desde la línea de comandos utilizando diferentes clientes de correo, pero aquí estoy compartiendo algunas utilidades de cliente de correo utilizadas por la mayoría de los usuarios como mailx, mutt y swaks.

Todas las herramientas que te presentaremos son muy populares y están presentes en los repositorios de la mayoría de las distribuciones de Linux, puedes instalarlas usando los siguientes comandos:

Para Debian / Ubuntu sistemas

apt-get install mutt
apt-get install swaks
apt-get install mailx
apt-get install sharutils

Para sistemas basados ​​en Red Hat como CentOS o Fedora

yum instalar mutt
yum instalar swaks
yum instalar mailx
yum instalar sharutils

1) Usando mail / mailx

La utilidad mailx que se encuentra como la aplicación de correo predeterminada en la mayoría de las distribuciones de Linux ahora incluye el soporte para adjuntar archivos. Si no está disponible, puede instalarlo fácilmente usando los siguientes comandos, tenga en cuenta que es posible que esto no sea compatible con versiones anteriores, para verificar esto, puede usar el comando:

$ man mail

Y la primera línea debería verse así:

mailx [-BDdEFintv~] [-s subject] [-a attachment ] [-c cc-addr] [-b bcc-addr] [-r from-addr] [-h hops] [-A account] [-S variable[=value]]to-addr. . .

Como puede ver, admite el atributo -a para agregar un archivo al correo electrónico y el atributo -s para el asunto del correo electrónico. Utilice algunos de los ejemplos siguientes para enviar correos.

a) Correo simple

Ejecute el comando de correo, y luego mailx esperará a que ingrese el mensaje del correo electrónico. Puede presionar enter para nuevas líneas. Cuando termine de escribir el mensaje, presione Ctrl + D y mailx mostrará EOT.

Después de, mailx entrega automáticamente el correo electrónico al destino.

$ mail user@example.com

HI,
Good Morning
How are you
EOT

B) Para enviar correo electrónico con asunto

$ echo "Email text" | mail -s "Test Subject" user@example.com

-s se utiliza para definir el asunto del correo electrónico.

C) Para enviar un mensaje desde un archivo

$ mail -s "message send from file" user@example.com < /path/to/file

D) Para enviar un mensaje canalizado usando el comando echo

$ echo "This is message body" | mail -s "This is Subject" user@example.com

mi) Para enviar correo electrónico con archivo adjunto

$ echo “Body with attachment "| mail -a foo.tar.gz -s "attached file" user@example.com

-a se utiliza para archivos adjuntos

2) chucho

Mutt es un cliente de correo electrónico basado en texto para sistemas similares a Unix. Fue desarrollado hace más de 20 años y es una parte importante de la historia de Linux, uno de los primeros clientes en admitir capacidades de puntuación y subprocesamiento. Utilice algunos de los ejemplos siguientes para enviar correos electrónicos.

a) Enviar correo electrónico con el asunto y el cuerpo del mensaje desde un archivo

$ mutt -s "Testing from mutt" user@example.com < /tmp/message.txt

B) Para enviar el mensaje del cuerpo por canalización usando el comando echo

$ echo "This is the body" | mutt -s "Testing mutt" user@example.com

C) Para enviar correo electrónico con archivo adjunto

$ echo "This is the body" | mutt -s "Testing mutt" user@example.com -a /tmp/foo.tar.gz

D) Para enviar correo electrónico con varios archivos adjuntos

$ echo "This is the body" | mutt -s "Testing" user@example.com -a foo.tar.gz –a bar.tar.gz

3) swaks

Swaks son las siglas de Swiss Army Knife para SMTP y es una herramienta de prueba SMTP con funciones, flexible, programable y orientada a transacciones, escrita y mantenida por John Jetmore. Puede utilizar la siguiente sintaxis para enviar un correo electrónico con un archivo adjunto:

$ swaks -t "foo@bar.com" --header "Subject: Subject" --body "Email Text" --attach foo.tar.gz

Lo importante de Swaks es que también depurará la transacción de correo completa por usted, por lo que es una herramienta muy útil si también desea depurar el proceso de envío de correo:

Como puede ver, le brinda todos los detalles sobre el proceso de envío, incluidas las capacidades que admite el servidor de correo receptor, en cada paso de la transacción entre los 2 servidores.

4) uuencode

Los sistemas de transporte de correo electrónico se diseñaron originalmente para transmitir caracteres con una codificación de siete bits, como ASCII. Esto significaba que podían enviar mensajes con texto sin formato pero no con texto «binario», como archivos de programa o archivos de imagen que usaban todo un byte de ocho bits. El programa que se utiliza para resolver esta limitación es «uuencode» («codificación de UNIX a UNIX») que codifica el correo de formato binario a un formato de texto que es seguro para transmitir y el programa se utiliza para decodificar los datos se llama «uudecode»

Podemos fácilmente enviar texto binario como archivos de programa o archivos de imagen que utilizan uuencode con mailx o mutt email client se muestra en el siguiente ejemplo:

$ uuencode example.jpeg example.jpeg | mail user@example.com

Shell Script: Explica cómo enviar correo electrónico

#!/bin/bash

FROM=""
SUBJECT=""
ATTACHMENTS=""
TO=""
BODY=""

# Function to check if entered file names are really files
function check_files()
{
output_files=""
for file in $1
do
if [ -s $file ]
then
output_files="${output_files}${file} "
fi
done
echo $output_files
}

echo "*********************"
echo "E-mail sending script."
echo "*********************"
echo

# Getting the From address from user
while [ 1 ]
do
if [ ! $FROM ]
then
echo -n -e "Enter the e-mail address you wish to send mail from:n[Enter] "
else
echo -n -e "The address you provided is not valid:n[Enter] "
fi

read FROM
echo $FROM | grep -E '^.+@.+$' > /dev/null
if [ $? -eq 0 ]
then
break
fi
done

echo

# Getting the To address from user
while [ 1 ]
do
if [ ! $TO ]
then
echo -n -e "Enter the e-mail address you wish to send mail to:n[Enter] "
else
echo -n -e "The address you provided is not valid:n[Enter] "
fi

read TO
echo $TO | grep -E '^.+@.+$' > /dev/null
if [ $? -eq 0 ]
then
break
fi
done

echo

# Getting the Subject from user
echo -n -e "Enter e-mail subject:n[Enter] "
read SUBJECT

echo

if [ "$SUBJECT" == "" ]
then
echo "Proceeding without the subject..."
fi

# Getting the file names to attach
echo -e "Provide the list of attachments. Separate names by space.
If there are spaces in file name, quote file name with "."
read att

echo

# Making sure file names are poiting to real files
attachments=$(check_files "$att")
echo "Attachments: $attachments"

for attachment in $attachments
do
ATTACHMENTS="$ATTACHMENTS-a $attachment "
done

echo

# Composing body of the message
echo "Enter message. To mark the end of message type ;; in new line."
read line

while [ "$line" != ";;" ]
do
BODY="$BODY$linen"
read line
done

SENDMAILCMD="mutt -e "set from=$FROM" -s "$SUBJECT" 
$ATTACHMENTS -- "$TO" <<< "$BODY""
echo $SENDMAILCMD

mutt -e "set from=$FROM" -s "$SUBJECT" $ATTACHMENTS -- $TO <<< $BODY

Salida de secuencia de comandos

$ bash send_mail.sh
*********************
E-mail sending script.
*********************

Enter the e-mail address you wish to send mail from:
[Enter] test@gmail.com

Enter the e-mail address you wish to send mail to:
[Enter] test@gmail.com

Enter e-mail subject:
[Enter] Message subject

Provide the list of attachments. Separate names by space.
If there are spaces in file name, quote file name with ".
send_mail.sh

Attachments: send_mail.sh

Enter message. To mark the end of message type ;; in new line.
This is a message
text
;;

Conclusión

Hay muchas formas de enviar correos electrónicos desde la línea de comandos / script de shell, pero aquí hemos compartido 4 herramientas disponibles para distribuciones basadas en Unix / Linux. Espero que haya disfrutado leyendo nuestro artículo y proporcione sus valiosos comentarios y también háganos saber si conoce alguna herramienta nueva.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar