Как отправить простой текстовый файл в виде вложения с помощью оболочки HP-UX script?

Мне нужно отправить электронное письмо с текстовым файлом в виде вложения с помощью оболочки script в HP-UX; Я не установил mutt.

Я использую следующую команду, но она отправляет содержимое файла в теле письма, я хочу, чтобы оно было вложением.

mailx -s "Report" [removed_email] < file.txt
4 ответа

Я написал эту функцию ksh несколько лет назад

# usage: email_attachment to cc subject body attachment_filename
email_attachment() {
 to="$1"
 cc="$2"
 subject="$3"
 body="$4"
 filename="${5:-''}"
 boundary="_====_blah_====_$(date +%Y%m%d%H%M%S)_====_"
 {
 print -- "To: $to"
 print -- "Cc: $cc"
 print -- "Subject: $subject"
 print -- "Content-Type: multipart/mixed; boundary=\"$boundary\""
 print -- "Mime-Version: 1.0"
 print -- ""
 print -- "This is a multi-part message in MIME format."
 print -- ""
 print -- "--$boundary"
 print -- "Content-Type: text/plain; charset=ISO-8859-1"
 print -- ""
 print -- "$body"
 print -- ""
 if [[ -n "$filename" && -f "$filename" && -r "$filename" ]]; then
 print -- "--$boundary"
 print -- "Content-Transfer-Encoding: base64"
 print -- "Content-Type: application/octet-stream; name=$filename"
 print -- "Content-Disposition: attachment; filename=$filename"
 print -- ""
 print -- "$(perl -MMIME::Base64 -e 'undef $/; open $fh, shift; print MIME::Base64::encode(<$fh>); close $fh; ' $filename)"
 print -- ""
 fi
 print -- "--${boundary}--"
 } | /usr/lib/sendmail -oi -t
}


uuencode является вашим другом.

Вот пример:

(uuencode .vimrc vimrc.txt; uuencode .zshrc zshrc.txt; echo Here are your attachments) | mailx -s 'Mail with attachments' email_address


У меня была та же проблема, когда вывод uuencode отправлялся как часть тела сообщения, а не как прикрепленный файл (по крайней мере, при использовании Outlook 2010 для просмотра отправленной почты). Я нашел ответ в этой теме http://www.unix.com/hp-ux/41306-sending-attachments-through-mailx.html

Добавление -m заставляет mailx не добавлять строки заголовка MIME при отправке электронной почты. Команда OP будет изменена так:

mailx -m -s "Report" [removed_email] < file.txt


Я также столкнулся с той же проблемой несколько месяцев назад. Мне нужна была команда ux2dos

( cat message_content_file; ux2dos file.txt | uuencode file.txt file.txt ) | mailx -m -s "subject" -r mail@sender mail@recipient

Надеюсь, это поможет! Отношения

licensed under cc by-sa 3.0 with attribution.