Как я могу отправить электронное письмо с помощью команды UNIX mailx
?
Как я могу отправить электронное письмо с помощью команды UNIX mailx
?
Ответы:
пример
$ 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
mail
.
uuencode
это унаследованная технология из прошлого тысячелетия, которая не дает того, что мы сегодня подразумеваем под «привязанностями». По сути, он помещает машиночитаемый беспорядок в конец текста сообщения. В наши дни вам будет лучше обслуживать почтовую программу, которая поддерживает MIME. К сожалению, не существует универсально поддерживаемой mailx
замены функциями MIME, но если да mutt
, то это, вероятно, путь наименьшего сопротивления.
Вот, пожалуйста :
echo "Body" | mailx -r "FROM_EMAIL" -s "SUBJECT" "To_EMAIL"
PS. Текст и тему следует заключать в двойные кавычки. Удалите цитаты из адресов электронной почты FROM_EMAIL
и To_EMAIL
при подстановке их.
mailx -s "subjec_of_mail" abc@domail.com < file_name
через mailx
утилиту мы можем отправить файл из unix
в mail server
. здесь, в коде выше, мы видим, что первый параметр - -s "subject of mail"
это второй параметр, mail ID
а последний параметр - это имя файла, который мы хотим прикрепить
mail [-s subject] [-c ccaddress] [-b bccaddress] toaddress
-c и -b необязательны.
-s: указать тему; если тема содержит пробелы, используйте кавычки.
-c: отправлять копии в список пользователей через запятую.
-b: отправлять скрытые копии в список пользователей через запятую.
Надеюсь, мой ответ проясняет ваши сомнения.
Это быстрее с командой 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
На странице руководства:
Отправка почты
Чтобы отправить сообщение одному или нескольким людям, mailx может быть вызван с аргументами, которые являются именами людей, которым будет отправлено письмо. Затем ожидается, что пользователь наберет свое сообщение, за которым следует «Ctrl-D» в начале строки.
Другими словами, mailx считывает содержимое для отправки со стандартного ввода и может быть перенаправлено как обычно. Например:
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
Настройка адреса ОТ
MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="u@u.com"
FROM="DONOTREPLY"
echo $MESSAGE | mail -s "$SUBJECT" $TOADDR -- -f $FROM
mail
и mailx
команд с разными опциями.
Вот многофункциональная функция для отправки почты с несколькими вложениями:
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 (тело) электронного письма перед использованием функции.
Если вы хотите отправить более двух человек или DL:
echo "Message Body" | mailx -s "Message Title" -r sender@someone.com receiver1@someone.com,receiver_dl@.com
Вот: