У меня есть сценарий оболочки, который использует функцию sendmail для отправки электронной почты, код выглядит следующим образом
mailalert(){
sendmail -F Sender-Name -it <<END_MESSAGE
To: Recipient@example.com
Subject: Subject
Message
END_MESSAGE
}
Он запускается всякий раз, когда я вызываю эту функцию. Теперь у меня есть текстовый файл, который я хочу отправить, используя sendmail в качестве вложения или в сообщении, которое он отправляет. Как я могу это сделать? Я перепробовал много хитростей, но ничего не получается. Пожалуйста помоги.
Введите uuencode /path/filename.txt | sendmail -s "subject" user@domain
в своем терминале для отправки почты.
Это фактический процесс отправки почты с вложением.
добавить uuencode /path/filename.txt
перед командой sendmail в вашем скрипте. Я имею в виду изменить его как
mailalert(){
uuencode /path/filename.txt
sendmail -F Sender-Name -it <<END_MESSAGE
To: Recipient@example.com
Subject: Subject
Message
END_MESSAGE
}
надеюсь, что это может помочь вам.
Довольно странно, но я использовал другой подход, так как при использовании uuencode
он начал выполняться, но курсор застрял на begin 644 /path/to/file
, поэтому я использовал cat для отправки моего файла в теле сообщения.
file=/path/to/file
mailalert(){
sendmail -F Sender-Name -it <<END_MESSAGE
To: Recipient@example.com
Subject: Subject
$(cat $file)
END_MESSAGE
}
Приведенный выше код работал отлично, но когда я увидел сообщение в своем веб-браузере, все было в порядке. Но когда я увидел его в Thunderbird, он показывался неправильно. Это было как-то закодировано.
Итак, я держу этот вопрос открытым, пока не найду правильного решения.
После поиска по многочисленным бесполезным страницам MAN и поиска в Google я, наконец, пришел к следующему решению:
Файл для отправки: test.csv
В Ubuntu у вас будет предоставлен uuencode (AIX). пакетом sharutils
, который вам может понадобиться установить (эквивалент на Redhat - mutt
).
uuencode test.csv test.csv | mail -v -s "Subject test" -r no-reply@mydomain.co.uk recepient@mydomain.co.uk
Самая большая проблема состояла в том, чтобы объединить sendmail и вложение и в то же время установить тему. Также в AIX у меня нет опции -a attachment
, как предлагает страница LINUX Man.
Вы также можете использовать mailx
вместо mail
с точно такими же параметрами.
При отправке почты, даже из командной строки, лучше использовать программу, которая была разработана для этой цели, а не вызывать sendmail
напрямую. Хороший универсальный клиент электронной почты для командной строки - mutt
; в частности, он имеет флаг командной строки для прикрепления файлов, что позволяет избежать громоздкого использования uuencode
:
echo Test | mutt -s Test -a image.jpg -- firas@fkraiem.org
Как обычно, см. man mutt
для получения информации об использовании.
Я создал скрипт ниже, чтобы прикрепить файл CSV. Файл генерируется, но он неправильно усекает имя строки / столбца заголовка CSV, а также есть еще один файл, который прикрепляется к письму, а именно «ATT0001.txt» с каждым письмом. Что-то не так, что вы могли бы узнать здесь?
(
echo "From:"$1;
echo "To:"$2;
echo "Subject:"$3;
echo "MIME-Version: 1.0";
echo "Content-Type:multipart/mixed; boundary=\"B835649000072104Jul07\"";
echo "--B835649000072104Jul07";
echo "Content-Type: text/html; charset=\"UTF-8\"";
echo "Content-Transfer-Encoding: 7bit";
echo "Content-Disposition: inline";
echo "";
echo "$4";
echo "--B835649000072104Jul07";
echo "Content-Type: text/csv";
echo "Content-Transfer-Encoding: base64";
echo "Content-Disposition: attachment; filename=\"$5\"";
base64 "$5"
echo "--B835649000072104Jul07";
) | sendmail -t