2011-03-22 2 views
8

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

Поскольку html-файл должен быть отправлен, необходимо использовать sendmail (я не мог использовать его с помощью mailx).

Как вы отправляете электронную почту HTML и несколько текстовых вложений с помощью sendmail?

ответ

0

Я не думаю, что sendmail поможет вам в этом. Пойдите для клиента как mutt, и сделайте, например. mutt -a file1 -a file2 -- [email protected]. Или за perl.

+0

Не все системы будут иметь возможность установить собачонку, так что ваш совет не очень полезно для кого-то, кто должен использовать Sendmail или mailx, так как задан вопрос :) – stevepastelan

+0

@stevepastelan Sendmail просто не может сделать он без дополнительных инструментов. Разумеется, какие инструменты вы выбираете. – ShiDoiSi

+1

Но, конечно, sendmail * может * сделать это. Это просто вопрос о том, как отформатировать содержимое для отправки в sendmail. – stevepastelan

9

Если у вас есть uunecode, доступных в вашей системе, можно отправить по электронной почте с несколькими приложениями, как это:

#!/bin/bash 

... 
... 
... 
BOUNDARY="=== This is the boundary between parts of the message. ===" 

{ 
    echo "From: $MAILFROM" 
    echo "To: $MAILTO" 
    echo "Subject:" $SUBJECT 
    echo "MIME-Version: 1.0" 
    echo "Content-Type: MULTIPART/MIXED; " 
    echo " BOUNDARY="\"$BOUNDARY\" 
    echo 
    echo "  This message is in MIME format. But if you can see this," 
    echo "  you aren't using a MIME aware mail program. You shouldn't " 
    echo "  have too many problems because this message is entirely in" 
    echo "  ASCII and is designed to be somewhat readable with old " 
    echo "  mail software." 
    echo 
    echo "--${BOUNDARY}" 
    echo "Content-Type: TEXT/PLAIN; charset=US-ASCII" 
    echo 
    echo "This email comes with multiple attachments." 
    echo 
    echo 
    echo "--${BOUNDARY}" 
    echo "Content-Type: application/zip; charset=US-ASCII; name="${ZIPFILE} 
    echo "Content-Disposition: attachment; filename="`basename ${ZIPFILE}` 
    echo 
    uuencode $ZIPFILE $ZIPFILE 
    echo 
    echo "--${BOUNDARY}--" 
    echo "Content-Type: application/pdf; charset=US-ASCII; name="${PDFFILE} 
    echo "Content-Disposition: attachment; filename="`basename ${PDFFILE}` 
    echo 
    uuencode $PDFFILE $PDFFILE 
    echo 
    echo "--${BOUNDARY}--" 
} | /usr/lib/sendmail -t 
+0

Письмо, отправленное из предложенного выше метода, способно отправить файл в приложении, но оно получено как закодированный файл в почтовом клиенте Outlook Outlook. Как отправить файл таким образом, чтобы он был получен в виде декодированного файла как конец приемника? – greperror

0

Вот скрипт Баш я использую для отправки отчетов я произвожу на людей. Они отправляются как вложения. Поместите свой HTML в переменную «body» скрипта. Я оставлю параметризацию переменных до вас.

#!/bin/bash 

function get_mimetype(){ 
file --mime-type "$1" | sed 's/.*: //' 
} 

from="[email protected]" 
to="[email protected]" 
subject="Your Report my Lord" 
boundary="=== Boundary ===" 
body="The reports are attached to this email" 
declare -a attachments 
attachments=("fileOne.out" "fileTwo.out" "fileThree.out" "file-et-cetera.out") 

# Build headers 
{ 

printf '%s\n' "From: $from 
To: $to 
Subject: $subject 
Mime-Version: 1.0 
Content-Type: multipart/mixed; boundary=\"$boundary\" 

--${boundary} 
Content-Type: text/plain; charset=\"US-ASCII\" 
Content-Transfer-Encoding: 7bit 
Content-Disposition: inline 

$body 
" 

for file in "${attachments[@]}"; do 

     [ ! -f "$file" ] && echo "Attachment $file not found, omitting file" >&2 && continue 

     mimetype=$(get_mimetype "$file") 

    printf '%s\n' "--${boundary} 
Content-Type: $mimetype 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; filename=\"$file\" 
    " 

    base64 "$file" 
    echo 
done 

# print last boundary with closing -- 
printf '%s\n' "--${boundary}--" 

} | sendmail -t -oi 

 Смежные вопросы

  • Нет связанных вопросов^_^