Как отправить простой текстовый файл в виде вложения с помощью сценария оболочки HP-UX? - PullRequest
3 голосов
/ 08 июня 2011

Мне нужно отправить электронное письмо с текстовым файлом в виде вложения, используя сценарий оболочки в HP-UX; У меня не установлено Mutt.

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

mailx -s "Report" name@example.com < file.txt

Ответы [ 4 ]

4 голосов
/ 08 июня 2011

Я написал эту 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
}
3 голосов
/ 08 июня 2011

uuencode ваш друг.

Вот проверенный пример:

(uuencode .vimrc vimrc.txt; uuencode .zshrc zshrc.txt; echo Here are your attachments) | mailx -s 'Mail with attachments' email_address
1 голос
/ 26 октября 2015

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

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

Надеюсь, это поможет!
Привет

1 голос
/ 08 декабря 2014

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

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

mailx -m -s "Report" name@example.com < file.txt

...