¿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 ?

user269484
fuente

Respuestas:

107

un ejemplo

$ echo "something" | mailx -s "subject" [email protected]

enviar adjunto

$ uuencode file file | mailx -s "subject" [email protected]

y enviar adjunto Y escribir el cuerpo del mensaje

$ (echo "something\n" ; uuencode file file) | mailx -s "subject" [email protected]
ghostdog74
fuente
4
Lo probé pero no da respuesta. Ni está dando algún mensaje de error ni enviando el correo a [email protected]. ¿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.

Kamran Ahmad
fuente
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 [email protected]
Kalpesh Soni
6
mailx -s "subjec_of_mail" [email protected] < 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

Girdhar Singh Rathore
fuente
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.

Pavan Kumar
fuente
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 [email protected] [email protected] -y
  1. -c lista de correo electrónico cc
  2. -s lista de materias
  3. -y para enviar el correo
user1651561
fuente
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" [email protected]
hlovdal
fuente
3
echo "Sending emails ..."
NOW=$(date +"%F %H:%M")
echo $NOW  " Running service" >> open_files.log
header=`echo "Service Restarting: " $NOW`


mail -s "$header" [email protected],   \
              [email protected], \ < open_files.log
Piyush Mattoo
fuente
1

Personalización de la dirección FROM

MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="[email protected]"
FROM="DONOTREPLY"

echo $MESSAGE | mail  -s "$SUBJECT" $TOADDR  -- -f $FROM
Hari
fuente
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

Ivo Yordanov
fuente
0

Si desea enviar más de dos personas o DL:

echo "Message Body" | mailx -s "Message Title" -r [email protected] [email protected],[email protected]

aquí:

  • -s = asunto o título del correo
  • -r = correo del remitente o DL
dildeepak
fuente
¿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