Jak mogę wysłać wiadomość e-mail za pomocą mailx
polecenia UNIX ?
Jak mogę wysłać wiadomość e-mail za pomocą mailx
polecenia UNIX ?
Odpowiedzi:
przykład
$ echo "something" | mailx -s "subject" recipient@somewhere.com
wysłać załącznik
$ uuencode file file | mailx -s "subject" recipient@somewhere.com
i wysłać załącznik ORAZ napisać treść wiadomości
$ (echo "something\n" ; uuencode file file) | mailx -s "subject" recipient@somewhere.com
mail
.
uuencode
jest to starsza technologia z minionego tysiąclecia, która nie wytwarza tego, co dzisiaj rozumiemy przez „przywiązanie”. Zasadniczo umieszcza czytelną maszynowo zagmatwaną wiadomość na końcu tekstu wiadomości. W dzisiejszych czasach lepiej byłoby, gdybyś był obsługiwany przez pocztę prawidłowo obsługującą MIME. Niestety, nie ma powszechnie obsługiwanego mailx
zamiennika z funkcjami MIME, ale jeśli tak mutt
, jest to prawdopodobnie ścieżka najmniejszego oporu.
Tu masz :
echo "Body" | mailx -r "FROM_EMAIL" -s "SUBJECT" "To_EMAIL"
PS. Treść i temat należy umieścić w cudzysłowie. Usuń z cytatów FROM_EMAIL
i To_EMAIL
jednocześnie zastępując adresy e-mail.
mailx -s "subjec_of_mail" abc@domail.com < file_name
poprzez mailx
narzędzie możemy wysłać plik z unix
do mail server
. tutaj w powyższym kodzie widzimy, że pierwszy parametr to -s "subject of mail"
drugi parametr, mail ID
a ostatni parametr to nazwa pliku, który chcemy załączyć
mail [-s subject] [-c ccaddress] [-b bccaddress] toaddress
-c i -b są opcjonalne.
-s: Określ temat; jeśli temat zawiera spacje, użyj cudzysłowów.
-c: Wyślij kopie do listy użytkowników oddzielonych przecinkami.
-b: Wyślij ukryte kopie do listy użytkowników oddzielonych przecinkami.
Mam nadzieję, że moja odpowiedź wyjaśnia twoje wątpliwości.
Jest szybszy z komendą 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
echo "" | mutt -s "test" -a ./file -- name@mail.com -y
Ze strony podręcznika:
Wysyłanie maila
Aby wysłać wiadomość do jednej lub kilku osób, można wywołać mailx z argumentami będącymi nazwiskami osób, do których wiadomość zostanie wysłana. Następnie oczekuje się, że użytkownik wpisze swoją wiadomość, a na początku linii pojawi się „control-D”.
Innymi słowy, mailx czyta zawartość do wysłania ze standardowego wejścia i może zostać przekierowana tak, jak zwykle. Na przykład:
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
Dostosowywanie z adresu
MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="u@u.com"
FROM="DONOTREPLY"
echo $MESSAGE | mail -s "$SUBJECT" $TOADDR -- -f $FROM
mail
i mailx
poleceń z różnymi opcjami.
Oto wielofunkcyjna funkcja do obsługi wysyłania poczty z kilkoma załącznikami:
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}
}
wywołanie funkcji: enviaremail "smtp.mailserver: port" "from_address" "authuser" "'pass'" "miejsce docelowe" "lista załączników oddzielonych spacją"
Uwaga: usuń podwójne cudzysłowy w wezwaniu
Ponadto pamiętaj, aby zdefiniować zewnętrznie $ titulo (temat) i $ cuerpo (treść) wiadomości e-mail przed użyciem funkcji
Jeśli chcesz wysłać więcej niż dwie osoby lub DL:
echo "Message Body" | mailx -s "Message Title" -r sender@someone.com receiver1@someone.com,receiver_dl@.com
tutaj: