Jak mogę wysłać wiadomość e-mail za pomocą polecenia mailx systemu UNIX?

92

Jak mogę wysłać wiadomość e-mail za pomocą mailxpolecenia UNIX ?

user269484
źródło

Odpowiedzi:

109

przykład

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

wysłać załącznik

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

i wysłać załącznik ORAZ napisać treść wiadomości

$ (echo "something\n" ; uuencode file file) | mailx -s "subject" [email protected]
ghostdog74
źródło
4
Próbowałem, ale nie daje odpowiedzi. Ani nie przekazuje wiadomości o błędzie, ani nie wysyła wiadomości na adres [email protected]. Czy potrzebna jest jakakolwiek konfiguracja serwera?
user269484
2
nie ma potrzeby żadnej konfiguracji. Sprawdź swoje łącze internetowe. Mam bezpośrednie połączenie kablowe z internetem, nie używam serwerów proxy ani niczego innego, więc działa po mojej stronie.
ghostdog74
2
Powinieneś także sprawdzić komunikaty o błędach w swojej skrzynce odbiorczej. To znaczy biegnij mail.
hafichuk
2
Należy jednak pamiętać, że uuencodejest 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 mailxzamiennika z funkcjami MIME, ale jeśli tak mutt, jest to prawdopodobnie ścieżka najmniejszego oporu.
tripleee
5
@ user269484 Gmail nie akceptuje e-maili z nieautoryzowanych adresów IP. Przeczytaj support.google.com/mail/answer/10336
34

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_EMAILi To_EMAILjednocześnie zastępując adresy e-mail.

Kamran Ahmad
źródło
1
Na Macu otrzymasz błąd z polecenia mailx, jeśli użyjesz -r mailx: nielegalna opcja - r Użycie: mailx [-EiInv] [-s temat] [-c cc-addr] [-b bcc-addr] [ -F] to-addr ... mailx [-EHiInNv] [-F] -f [nazwa] mailx [-EHiInNv] [-F] [-u użytkownik] mailx -e [-f nazwa]
mailx
możesz zrobić -S [email protected]
Kalpesh Soni
6
mailx -s "subjec_of_mail" [email protected] < file_name

poprzez mailxnarzędzie możemy wysłać plik z unixdo mail server. tutaj w powyższym kodzie widzimy, że pierwszy parametr to -s "subject of mail" drugi parametr, mail IDa ostatni parametr to nazwa pliku, który chcemy załączyć

Girdhar Singh Rathore
źródło
1
To nie załącza pliku, umieszcza zawartość pliku w treści
Guus
5
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.

Pavan Kumar
źródło
5

Jest szybszy z komendą MUTT

echo "Body Of the Email"  | mutt -a "File_Attachment.csv" -s "Daily Report for $(date)"  -c [email protected] [email protected] -y
  1. -c e-mail lista DW
  2. -s lista tematów
  3. -y, aby wysłać pocztę
user1651561
źródło
Musiałem oddzielić załączniki echo "" | mutt -s "test" -a ./file -- [email protected] -y
znakiem
4

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" [email protected]
hlovdal
źródło
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
źródło
1

Dostosowywanie z adresu

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

echo $MESSAGE | mail  -s "$SUBJECT" $TOADDR  -- -f $FROM
Hari
źródło
Wyjątek od man mail: -f [plik] Wczytuje zawartość mbox użytkownika (lub określonego pliku) w celu przetworzenia; kiedy mailx jest zamknięty, zapisuje nieusunięte wiadomości z powrotem do tego pliku. Plik ciągu jest obsługiwany w sposób opisany dla polecenia folderu poniżej.
ZJ Lyu
To zależy od używanej wersji. Istnieje wiele niezgodnych rywalizacji maili mailxpoleceń z różnymi opcjami.
tripleee
1

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

Ivo Yordanov
źródło
0

Jeśli chcesz wysłać więcej niż dwie osoby lub DL:

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

tutaj:

  • -s = temat lub tytuł wiadomości
  • -r = poczta nadawcy lub DL
dildeepak
źródło
Czy możesz wyjaśnić, dlaczego do przekazywania treści wiadomości używane jest echo? Jeśli pominę to i wykonam z MailX, kursor będzie migał, jakby czekał na dane wejściowe.
LonelyRogue