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


Odpowiedzi:


109

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

4
Próbowałem, ale nie daje odpowiedzi. Ani nie przekazuje wiadomości o błędzie, ani nie wysyła wiadomości na adres myname@gmail.com. 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.


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 from=a@b.com
Kalpesh Soni

6
mailx -s "subjec_of_mail" abc@domail.com < 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ć


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.


5

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
  1. -c e-mail lista DW
  2. -s lista tematów
  3. -y, aby wysłać pocztę

Musiałem oddzielić załączniki echo "" | mutt -s "test" -a ./file -- name@mail.com -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" 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

Dostosowywanie z adresu

MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="u@u.com"
FROM="DONOTREPLY"

echo $MESSAGE | mail  -s "$SUBJECT" $TOADDR  -- -f $FROM

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


0

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:

  • -s = temat lub tytuł wiadomości
  • -r = poczta nadawcy lub DL

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.