¿Cómo puedo enviar un correo electrónico a través del mailx
comando UNIX ?
¿Cómo puedo enviar un correo electrónico a través del mailx
comando UNIX ?
Respuestas:
un ejemplo
$ echo "something" | mailx -s "subject" recipient@somewhere.com
enviar adjunto
$ uuencode file file | mailx -s "subject" recipient@somewhere.com
y enviar adjunto Y escribir el cuerpo del mensaje
$ (echo "something\n" ; uuencode file file) | mailx -s "subject" recipient@somewhere.com
mail
.
uuencode
es una tecnología heredada de un milenio pasado que no produce lo que hoy entendemos por "adjuntos". Básicamente, coloca un fragmento legible por máquina al final del texto del mensaje. En esta época, sería mejor que le atendiera un programa de correo compatible con MIME. Desafortunadamente, no existe un mailx
reemplazo universalmente compatible con las funciones MIME, pero si lo ha hecho mutt
, probablemente ese sea el camino de menor resistencia.
Aquí estás :
echo "Body" | mailx -r "FROM_EMAIL" -s "SUBJECT" "To_EMAIL"
PD. El cuerpo y el asunto deben mantenerse entre comillas dobles. Elimine las comillas de las direcciones de correo electrónico FROM_EMAIL
y To_EMAIL
mientras las sustituye.
mailx -s "subjec_of_mail" abc@domail.com < file_name
a través de la mailx
utilidad podemos enviar un archivo desde unix
hasta mail server
. aquí en el código anterior podemos ver que el primer parámetro es -s "subject of mail"
el segundo parámetro mail ID
y el último parámetro es el nombre del archivo que queremos adjuntar
mail [-s subject] [-c ccaddress] [-b bccaddress] toaddress
-cy -b son opcionales.
-s: Especifique el tema; si el tema contiene espacios, use comillas.
-c: Envíe copias carbón a la lista de usuarios separados por comas.
-b: Envía copias en carbón ocultas a la lista de usuarios separados por comas.
Espero que mi respuesta aclare tu duda.
Es más rápido con el comando MUTT
echo "Body Of the Email" | mutt -a "File_Attachment.csv" -s "Daily Report for $(date)" -c cc_mail@g.com to_mail@g.com -y
Desde la página del manual:
Enviando correo
Para enviar un mensaje a una o más personas, mailx se puede invocar con argumentos que son los nombres de las personas a las que se enviará el correo. Luego, se espera que el usuario escriba su mensaje, seguido de un 'control-D' al comienzo de una línea.
En otras palabras, mailx lee el contenido para enviar desde la entrada estándar y puede ser redirigido como de costumbre. P.ej:
ls -l $HOME | mailx -s "The content of my home directory" someone@email.adr
echo "Sending emails ..."
NOW=$(date +"%F %H:%M")
echo $NOW " Running service" >> open_files.log
header=`echo "Service Restarting: " $NOW`
mail -s "$header" abc.xyz@google.com, \
cde.mno@yahoo.com, \ < open_files.log
Personalización de la dirección FROM
MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="u@u.com"
FROM="DONOTREPLY"
echo $MESSAGE | mail -s "$SUBJECT" $TOADDR -- -f $FROM
mail
y mailx
comandos incompatibles que compiten con diferentes opciones.
Aquí hay una función multifuncional para abordar el envío de correo con varios archivos adjuntos:
enviaremail() {
values=$(echo "$@" | tr -d '\n')
listargs=()
listargs+=($values)
heirloom-mailx $( attachment=""
for (( a = 5; a < ${#listargs[@]}; a++ )); do
attachment=$(echo "-a ${listargs[a]} ")
echo "${attachment}"
done) -v -s "${titulo}" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://$1 \
-S from="${2}" \
-S smtp-auth-user=$3 \
-S smtp-auth-password=$4 \
-S ssl-verify=ignore \
$5 < ${cuerpo}
}
llamada de función: enviaremail "smtp.mailserver: port" "from_address" "authuser" "'pass'" "destino" "lista de adjuntos separados por espacio"
Nota: elimine las comillas dobles en la llamada
Además, recuerde definir externamente el $ titulo (asunto) y $ cuerpo (cuerpo) del correo electrónico antes de usar la función
Si desea enviar más de dos personas o DL:
echo "Message Body" | mailx -s "Message Title" -r sender@someone.com receiver1@someone.com,receiver_dl@.com
aquí: