目标:使用HTML正文和二进制附件发送邮件(使用sendmail).
遵循以下链接中指定的准则
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的shell脚本片段.有了这个,HTML正在变得很好,但是附件被错误地编码/解码并且无法查看相同的内容.
请指教.
#!/usr/bin/ksh export MAILFROM="noreply@site.dom" export MAILTO="somebody@somesite.com" 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
将电子邮件中的内容传输编码类型从base64更改为uuencode解决了该问题.
感谢到目前为止的输入.
原文链接:https://www.f2er.com/bash/387001.html感谢到目前为止的输入.
下面给出了修订后的脚本.
#!/usr/bin/ksh export MAILFROM="noreply@domain.com" export MAILTO="mail.to@gmail.com" 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