¿Cómo puedo enviar un correo electrónico a través del comando mailx de UNIX?


90

¿Cómo puedo enviar un correo electrónico a través del mailxcomando UNIX ?

Respuestas:


107

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

4
Lo probé pero no da respuesta. Ni está dando algún mensaje de error ni enviando el correo a myname@gmail.com. ¿Es necesaria alguna configuración de servidor?
user269484

2
no es necesaria ninguna configuración. Comprueba tu conexión a Internet. Tengo una conexión directa a internet a través de cable, no uso proxies ni nada por lo que funciona de mi lado.
ghostdog74

2
También debe verificar si hay mensajes de error en su bandeja de entrada. Es decir, corre mail.
hafichuk

2
Tenga en cuenta, sin embargo, que uuencodees 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 mailxreemplazo universalmente compatible con las funciones MIME, pero si lo ha hecho mutt, probablemente ese sea el camino de menor resistencia.
tripleee

5
@ user269484 Gmail no acepta correo electrónico de direcciones IP no autorizadas. Leer support.google.com/mail/answer/10336
Manas Jayanth

33

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_EMAILy To_EMAILmientras las sustituye.


1
En Mac, recibirá un error del comando mailx si usa -r mailx: opción ilegal - r Uso: mailx [-EiInv] [-s asunto] [-c cc-addr] [-b bcc-addr] [ -F] to-addr ... mailx [-EHiInNv] [-F] -f [nombre] mailx [-EHiInNv] [-F] [-u usuario] mailx -e [-f nombre] mailx -H
jcpennypincher

podría hacer -S from=a@b.com
Kalpesh Soni

6
mailx -s "subjec_of_mail" abc@domail.com < file_name

a través de la mailxutilidad podemos enviar un archivo desde unixhasta 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 IDy el último parámetro es el nombre del archivo que queremos adjuntar


1
Esto no adjunta el archivo, coloca el contenido del archivo en el cuerpo
Guus

5
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.


5

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
  1. -c lista de correo electrónico cc
  2. -s lista de materias
  3. -y para enviar el correo

4

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

3
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

1

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

Una excepción de man mail: -f [archivo] Lee el contenido del mbox del usuario (o el archivo especificado) para su procesamiento; cuando se sale de mailx, escribe los mensajes no eliminados en este archivo. El archivo de cadena se maneja como se describe para el comando de carpeta a continuación.
ZJ Lyu

Depende de la versión que esté utilizando. Hay varios comandos maily mailxcomandos incompatibles que compiten con diferentes opciones.
tripleee

1

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


0

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í:

  • -s = asunto o título del correo
  • -r = correo del remitente o DL

¿Puede explicar por qué se utiliza echo para pasar el cuerpo de un mensaje? Si omito esto y ejecuto desde MailX, el cursor parpadea como si esperara una entrada.
LonelyRogue
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.