Come posso inviare un'e-mail tramite il mailx
comando UNIX ?
Come posso inviare un'e-mail tramite il mailx
comando UNIX ?
Risposte:
un esempio
$ echo "something" | mailx -s "subject" recipient@somewhere.com
per inviare allegato
$ uuencode file file | mailx -s "subject" recipient@somewhere.com
e per inviare l'allegato E scrivere il corpo del messaggio
$ (echo "something\n" ; uuencode file file) | mailx -s "subject" recipient@somewhere.com
mail
.
uuencode
è una tecnologia ereditata da un millennio passato che non produce ciò che oggi intendiamo per "attaccamento". Fondamentalmente mette un pezzo di confusione leggibile dalla macchina alla fine del testo del messaggio. Al giorno d'oggi, sareste serviti meglio da un mailer adeguatamente consapevole di MIME. Sfortunatamente, non esiste una mailx
sostituzione universalmente supportata con le funzionalità MIME, ma se lo hai mutt
, è probabilmente il percorso di minor resistenza.
Ecco qui :
echo "Body" | mailx -r "FROM_EMAIL" -s "SUBJECT" "To_EMAIL"
PS. Corpo e soggetto devono essere mantenuti tra virgolette doppie. Rimuovi le virgolette da FROM_EMAIL
e To_EMAIL
durante la sostituzione degli indirizzi email.
mailx -s "subjec_of_mail" abc@domail.com < file_name
tramite mailx
utility possiamo inviare un file da unix
a mail server
. qui nel codice sopra possiamo vedere il primo parametro è -s "subject of mail"
il secondo parametro è mail ID
e l'ultimo parametro è il nome del file che vogliamo allegare
mail [-s subject] [-c ccaddress] [-b bccaddress] toaddress
-c e -b sono opzionali.
-s: specifica l'oggetto; se l'oggetto contiene spazi, usa le virgolette.
-c: invia copie per conoscenza a un elenco di utenti separati da virgola.
-b: Invia copie per conoscenza nascoste all'elenco di utenti separati da virgola.
Spero che la mia risposta chiarisca il tuo dubbio.
È più veloce con il 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
Dalla pagina man:
Invio di posta
Per inviare un messaggio a una o più persone, mailx può essere invocato con argomenti che sono i nomi delle persone a cui verrà inviata la posta. L'utente deve quindi digitare il suo messaggio, seguito da un "control-D" all'inizio di una riga.
In altre parole, mailx legge il contenuto da inviare dallo standard input e può essere reindirizzato come al solito. Per esempio:
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
Personalizzazione dell'indirizzo FROM
MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="u@u.com"
FROM="DONOTREPLY"
echo $MESSAGE | mail -s "$SUBJECT" $TOADDR -- -f $FROM
mail
e concorrenti incompatibili mailx
con opzioni diverse.
Ecco una funzione multifunzionale per affrontare l'invio di posta con diversi allegati:
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}
}
chiamata di funzione: enviaremail "smtp.mailserver: port" "from_address" "authuser" "'pass'" "destination" "elenco di allegati separati da spazio"
Nota: rimuovere le virgolette doppie nella chiamata
Inoltre ricordati di definire esternamente $ titulo (oggetto) e $ cuerpo (corpo) dell'email prima di utilizzare la funzione
Se vuoi inviare più di due persone o DL:
echo "Message Body" | mailx -s "Message Title" -r sender@someone.com receiver1@someone.com,receiver_dl@.com
Qui: