Shell-скрипт для отправки электронной почты [дубликат]
этот вопрос уже есть ответ здесь:
- Отправка почты из сценария оболочки linux 9 ответов
Я нахожусь на машине linux, и я контролирую использование процесса. Большую часть времени я буду вдали от своей системы, и у меня есть доступ к интернету на моем устройстве. Поэтому я планировал написать shell-скрипт, который может написать мне выход процесс.
возможно ли это?
Если да, то как сделать оболочку-скрипт отправить мне письмо?
пожалуйста, предоставьте фрагмент, чтобы начать работу.
7 ответов:
Да он отлично работает и широко используется:
$ echo "hello world" | mail -s "a subject" someone@somewhere.com
В основном есть программа для этого, называемая "почта". Тема письма может быть указана с помощью a-s и списка адресов с помощью-t. вы можете написать текст самостоятельно с помощью команды echo:
echo "This will go into the body of the mail." | mail -s "Hello world" you@youremail.com
или получить его из других файлов тоже:
mail -s "Hello world" you@youremailid.com < /home/calvin/application.log
почта не поддерживает отправку вложений, но Mutt делает:
echo "Sending an attachment." | mutt -a file.zip -s "attachment" target@email.com
обратите внимание, что Mutt гораздо более полный, чем Почта. Вы можете найти лучшее объяснение здесь
PS: спасибо @slhck, который указал, что мой предыдущий ответ был ужасен. ;)
#!/bin/sh #set -x LANG=fr_FR # ARG FROM="foo@bar.com" TO="foo@bar.com" SUBJECT="test é" MSG="BODY éé" FILES="fic1.pdf fic2.pdf" # http://fr.wikipedia.org/wiki/Multipurpose_Internet_Mail_Extensions SUB_CHARSET=$(echo ${SUBJECT} | file -bi - | cut -d"=" -f2) SUB_B64=$(echo ${SUBJECT} | uuencode --base64 - | tail -n+2 | head -n+1) NB_FILES=$(echo ${FILES} | wc -w) NB=0 cat <<EOF | /usr/sbin/sendmail -t From: ${FROM} To: ${TO} MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=frontier Subject: =?${SUB_CHARSET}?B?${SUB_B64}?= --frontier Content-Type: $(echo ${MSG} | file -bi -) Content-Transfer-Encoding: 7bit ${MSG} $(test $NB_FILES -eq 0 && echo "--frontier--" || echo "--frontier") $(for file in ${FILES} ; do let NB=${NB}+1 FILE_NAME="$(basename $file)" echo "Content-Type: $(file -bi $file); name=\"${FILE_NAME}\"" echo "Content-Transfer-Encoding: base64" echo "Content-Disposition: attachment; filename=\"${FILE_NAME}\"" #echo "" uuencode --base64 ${file} ${FILE_NAME} test ${NB} -eq ${NB_FILES} && echo "--frontier--" || echo "--frontier" done) EOF
mail -s "Your Subject" your@email.com < /file/with/mail/content
(
/file/with/mail/content
должен быть текстовый файл, а не вложенный файл или изображение и т. д.)