Як я можу надіслати електронне повідомлення за допомогою команди UNIX mailx?


Відповіді:


107

приклад

$ echo "something" | mailx -s "subject" recipient@somewhere.com

надіслати вкладення

$ uuencode file file | mailx -s "subject" recipient@somewhere.com

і надіслати вкладення І написати тіло повідомлення

$ (echo "something\n" ; uuencode file file) | mailx -s "subject" recipient@somewhere.com

4
Я спробував, але це не дає відповіді. Ні повідомлення про помилку, ні надсилання листа на myname@gmail.com. Чи потрібна якась конфігурація сервера?
user269484

2
немає необхідності в будь-якій конфігурації. Перевірте підключення до Інтернету. У мене є пряме підключення до Інтернету за допомогою кабелю, я не використовую проксі чи щось інше, тому це працює на моїй стороні.
ghostdog74

2
Також слід перевірити наявність повідомлень про помилки у вашій поштовій скриньці. Тобто бігати mail.
hafichuk

2
Однак зазначимо, що uuencodeце застаріла технологія минулого тисячоліття, яка не дає того, що ми сьогодні маємо на увазі під "прихильністю". В основному це ставить машиночитаний шматок перемішування в кінці тексту повідомлення. У ці дні і віки вам краще служитиме кореспондент, належним чином відомий MIME. На жаль, не існує універсальної mailxзаміни функцій MIME, але якщо у вас є mutt, це, мабуть, шлях найменшого опору.
триплі

5
@ user269484 Gmail не приймає електронну пошту з несанкціонованих IP-адрес. Прочитайте support.google.com/mail/answer/10336
Манас Джаянт

33

Ось ви:

echo "Body" | mailx -r "FROM_EMAIL" -s "SUBJECT" "To_EMAIL"

PS. Тіло та тема повинні міститися в подвійних лапках. Видаліть лапки зFROM_EMAIL і To_EMAILзамінюючи адреси електронної пошти.


1
На Mac ви отримаєте повідомлення про помилку від команди mailx, якщо використовуєте -r mailx: нелегальний параметр - r Використання: mailx [-EiInv] [-s subject] [-c cc-addr] [-b bcc-addr] [ -F] до адреси ... mailx [-EHiInNv] [-F] -f [name] mailx [-EHiInNv] [-F] [-u user] mailx -e [-f name] mailx -H
jcpennypincher

ви могли б зробити -S from=a@b.com
Калпеш Соні

6
mailx -s "subjec_of_mail" abc@domail.com < file_name

за допомогою mailxутиліти ми можемо надіслати файл з unixдо mail server. тут у наведеному вище коді ми бачимо, що перший параметр - -s "subject of mail" це другий параметр, mail IDа останній параметр - це назва файлу, який ми хочемо прикріпити


1
Це не прикріплює файл, він вміщує вміст файлу в тіло
Гуус,

5
mail [-s subject] [-c ccaddress] [-b bccaddress] toaddress

-c та -b не є обов'язковими.

-s: Вкажіть тему; якщо тема містить пробіли, використовуйте лапки.

-c: Надіслати копії списку користувачів, розділених комами.

-b: Надіслати сліпі копії копій до списку користувачів, розділених комами.

Сподіваюся, моя відповідь прояснить ваші сумніви.


5

Це швидше за допомогою команди 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 список cc електронної пошти
  2. -s список предметів
  3. -y для надсилання пошти

4

Зі сторінки користувача:

Відправлення пошти

Щоб надіслати повідомлення одному або декільком людям, можна викликати mailx з аргументами, які є іменами людей, яким буде надіслана пошта. Потім очікується, що користувач набере своє повідомлення, після чого на початку рядка з'явиться "control-D".

Іншими словами, mailx читає вміст для надсилання зі стандартного вводу і може бути перенаправлений як звичайний. Наприклад:

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

Налаштування ВІД адреси

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

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

За винятком man mail: -f [файл] Прочитати вміст користувацького mbox (або вказаний файл) для обробки; коли mailx виходить, він записує невидалені повідомлення назад у цей файл. Файл рядка обробляється, як описано для команди папки нижче.
ZJ Лю

Це залежить від того, яку версію ви використовуєте. Є кілька несумісних конкуруючих команд mailі mailxкоманд з різними опціями.
триплеє

1

Ось багатофункціональна функція для вирішення питань надсилання пошти з кількома вкладеннями:

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}
}

виклик функції: enviaremail "smtp.mailserver: port" "from_address" "authuser" "'pass'" "destination" "список вкладень, розділених пробілом"

Примітка: Видаліть подвійні лапки у дзвінку

Крім того, не забудьте визначити зовні $ titulo (тема) та $ cuerpo (тіло) електронного листа перед використанням функції


0

Якщо ви хочете надіслати більше двох осіб або DL:

echo "Message Body" | mailx -s "Message Title" -r sender@someone.com receiver1@someone.com,receiver_dl@.com

тут:

  • -s = тема або назва пошти
  • -r = пошта відправника або DL

Чи можете ви пояснити, чому ехо використовується для передачі тіла повідомлення? Якщо я опустити це і виконати з MailX, курсор блимає так, ніби чекає введення.
LonelyRogue
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.