web-dev-qa-db-ja.com

HTML本文とバイナリ添付ファイルにsendmailを使用する

目的: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へのシェルスクリプトのスニペットを示します。これにより、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-UXia64を使用しています。フォーラムとWebを検索し、主にPHP、Pythonなどへの参照を見つけました。

10
compuneo

電子メール内のコンテンツ転送エンコーディングタイプを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
11
compuneo

uuencodeの後に新しい行を追加してみてください

-mなしでも試してみてください

0