отправка файла с помощью sendmail

У меня есть сценарий оболочки, который использует функцию sendmail для отправки электронной почты, код выглядит следующим образом

mailalert(){
sendmail -F Sender-Name -it <<END_MESSAGE
To: Recipient@example.com
Subject: Subject

Message
END_MESSAGE
}

Он запускается всякий раз, когда я вызываю эту функцию. Теперь у меня есть текстовый файл, который я хочу отправить, используя sendmail в качестве вложения или как сообщение в отправляемом электронном письме. Как я могу это сделать? Я пробовал много трюков, но ничего не работает. Пожалуйста помоги.

1
задан 9 October 2013 в 18:32

4 ответа

Введите uuencode /path/filename.txt | sendmail -s "subject" user@domain в своем терминале для отправки почты.

Замените «путь» на фактический путь к каталогу, в котором находится файл для прикрепления. Замените «filename.ext» на фактическое имя файла и расширение. Замените «тему» ​​на строку темы, которую вы хотите, чтобы письмо было у вас. Замените «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
}

надежды, которые могут вам помочь.

3
ответ дан 24 May 2018 в 17:04
  • 1
    Спасибо за ответ. Я попробовал, но это дает ошибку uuencode: not found. – Tarun 9 October 2013 в 18:54
  • 2
    оч! ok sudo apt-get install sharutils, затем повторите попытку. @ Tarun – Ten-Coin 9 October 2013 в 18:57
  • 3
    Я пробовал этот подход, но при выполнении скрипта он дает сообщение begin 644 /path/filename.txt, и курсор продолжает мигать. – Tarun 9 October 2013 в 19:21
  • 4
    @Tarun просто посмотрите здесь google.co.in/… – Ten-Coin 9 October 2013 в 20:36

После поиска многочисленных бесполезных страниц MAN и googling я, наконец, пришел к этому решению: Файл для отправки: test.csv

На Ubuntu у вас будет uuencode (AIX), предоставляемый пакетом , который вам может потребоваться установить (эквивалент 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 с точно такими же параметрами.

0
ответ дан 24 May 2018 в 17:04
  • 1
    mutt не является "эквивалентным" из uuencode. Кроме того, mailx всегда должен быть предпочтительнее mail, так как последний является нестандартным. – fkraiem 1 December 2017 в 15:10

При отправке почты, даже из командной строки, лучше всего использовать программу, предназначенную для этой цели, вместо прямого вызова sendmail. Хорошим универсальным почтовым клиентом командной строки является mutt; в частности, он имеет флаг командной строки для прикрепления файлов, что позволяет избежать громоздкого использования uuencode:

echo Test | mutt -s Test -a image.jpg -- firas@fkraiem.org

Как обычно, см. man mutt для информации об использовании.

0
ответ дан 24 May 2018 в 17:04

Я создал ниже сценарий для присоединения файла CSV. Файл генерируется, но его обрезание заголовка / столбца имя CSV неправильно, а также есть еще один файл, который прикрепляется к электронной почте, а именно «ATT0001.txt» с каждым письмом. Что-то не так, что вы могли бы узнать здесь?

SCRIPT

(
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
0
ответ дан 24 May 2018 в 17:04

Другие вопросы по тегам:

Похожие вопросы: