2012-06-21 5 views
10

Цель: отправить почту (используя sendmail) с телом HTML и бинарным вложением.Использование sendmail для размещения в блоке и двоичном вложении HTML

следуют рекомендациям, указанным в следующих ссылок

http://www.unix.com/shell-programming-scripting/159522-sendmail-html-body-attachment-2.html

http://www.unix.com/shell-programming-scripting/58448-sendmail-attachment.html

Она работает в той степени, что, либо HTML тело или двоичное вложение с UUENCODE, но не оба.

Ниже приведен фрагмент сценария оболочки sendmail. При этом тело HTML идет хорошо, но вложение получает кодирование/декодирование ошибочно и не может просматривать то же самое.

Просьба сообщить.

#!/usr/bin/ksh 

export MAILFROM="[email protected]" 
export MAILTO="[email protected]" 
export SUBJECT="Test PDF for Email" 
export BODY="email_body.htm" 
export ATTACH="file.pdf" 
export MAILPART=`uuidgen` ## Generates Unique ID 
(
echo "From: $MAILFROM" 
echo "To: $MAILTO" 
echo "Subject: $SUBJECT" 
echo "MIME-Version: 1.0" 
echo "Content-Type: multipart/mixed; boundary=\"-$MAILPART\"" 
echo "---$MAILPART" 
echo "Content-Type: text/html" 
echo "Content-Disposition: inline" 
cat $BODY 
echo "---$MAILPART" 
echo 'Content-Type: application/pdf; name="'$(basename $ATTACH)'"' 
echo "Content-Transfer-Encoding: base64" 
echo 'Content-Disposition: attachment; filename="'$(basename $ATTACH)'"' 
uuencode -m $ATTACH $(basename $ATTACH) 
echo "---$MAILPART--" 
) | /usr/sbin/sendmail $MAILTO 

Я использую HP-UX ia64. искал через форум и Интернет и нашел ссылки в основном на PHP, Python и т.д.

+0

Использование 'Mutt -a' гораздо проще:. Http://www.mutt.org/doc/man_page.html – ceving

+0

Спасибо, но текущая настройка сервера ограничивает меня Sendmail только :-(Кроме того, mutt не установлен/установлен на сервере – compuneo

+0

Отправить письмо электронной почты с текстовым вложением с помощью sendmail: http://stackoverflow.com/questions/17359/how-do-i-send-a-file-as-an- mail-attachment-using-linux-command-line/14213935 # 14213935 –

ответ

11

Изменения типа кодирования передачи контента в электронная почта от base64 до uuencode разрешила проблему. Спасибо за входные данные.

Ниже приведен переработанный сценарий, который работает.

#!/usr/bin/ksh 

export MAILFROM="[email protected]" 
export MAILTO="[email protected]" 
export SUBJECT="Test PDF for Email" 
export BODY="email_body.htm" 
export ATTACH="file.pdf" 
export MAILPART=`uuidgen` ## Generates Unique ID 
export MAILPART_BODY=`uuidgen` ## Generates Unique ID 

(
echo "From: $MAILFROM" 
echo "To: $MAILTO" 
echo "Subject: $SUBJECT" 
echo "MIME-Version: 1.0" 
echo "Content-Type: multipart/mixed; boundary=\"$MAILPART\"" 
echo "" 
echo "--$MAILPART" 
echo "Content-Type: multipart/alternative; boundary=\"$MAILPART_BODY\"" 
echo "" 
echo "--$MAILPART_BODY" 
echo "Content-Type: text/plain; charset=ISO-8859-1" 
echo "You need to enable HTML option for email" 
echo "--$MAILPART_BODY" 
echo "Content-Type: text/html; charset=ISO-8859-1" 
echo "Content-Disposition: inline" 
cat $BODY 
echo "--$MAILPART_BODY--" 

echo "--$MAILPART" 
echo 'Content-Type: application/pdf; name="'$(basename $ATTACH)'"' 
echo "Content-Transfer-Encoding: uuencode" 
echo 'Content-Disposition: attachment; filename="'$(basename $ATTACH)'"' 
echo "" 
#uuencode -m $ATTACH $(basename $ATTACH) 
uuencode $ATTACH $(basename $ATTACH) 
echo "--$MAILPART--" 
) > email_`date '+%Y%m%d_%H%M%S'`.out 
| /usr/sbin/sendmail $MAILTO 
+1

Как это сделать для нескольких приложений? – divinedragon

+0

@divinedragon, вы повторяете код из 'echo '- $ MAILPART" 'перед" echo "- $ MAILPART -" '. Вот что добавляет одно вложение. –

0

попробуйте добавить новую строку после uuencode

и попробовать также без -m

+0

uuencode -m автоматически добавляет новую строку в конец. Я уже пробовал с -m, и он тоже не работал. Я снова попробовал оба предложения от вы и те же проблемы (приложение приходит, но недействительно). – compuneo