sendmailを使用して添付ファイル付きのメールを送信しようとしています。問題は私はこれに沿って件名を送ることができないということです。uuencodeでsendmailを使用してメールを送信し、件名と一緒に
次のコマンドラインは1つではなく、2通のメール発射 - 添付ファイル付きの "Subject : Report
" と1、およびその他を:おそらく、あなたを
mail -s 'Report' [email protected] < tmp/url_by_ip.txt
sendmailを使用して添付ファイル付きのメールを送信しようとしています。問題は私はこれに沿って件名を送ることができないということです。uuencodeでsendmailを使用してメールを送信し、件名と一緒に
次のコマンドラインは1つではなく、2通のメール発射 - 添付ファイル付きの "Subject : Report
" と1、およびその他を:おそらく、あなたを
mail -s 'Report' [email protected] < tmp/url_by_ip.txt
はこれを試してみてくださいいくつかのユーティリティはMIMEメールを送信したいですか? vmime C++ libraryがあり、多くのスクリプト言語(Python、Ruby、Perl、Ocaml、...)にはMIME用のパッケージがあります。また、シェルスクリプトで使用できるコマンドもあります。 mpackなど多くのものがあります。
:
/usr/bin/gmime-uuencode "/tmp/url_by_ip.txt" "Report.txt" | echo "Subject: Report" | /usr/sbin/sendmail <sender> <receiver>
あなたは他のコマンドを使用することができる場合、私は非常に簡単に添付ファイルを扱うことができるmutt
をお勧めしたい:
mutt -a file_to_attach -s "your subject" [email protected] < /tmp/mail_content
あなたが/usr/sbin/sendmail
で立ち往生している場合は、あなたがやるべきことがたくさんより多くを持っています。 sendmail
には添付ファイルの概念がなく、電子メールコンテンツはフラットなUS-ASCIIテキストとして扱われます(詳細はthis answerを参照)。
sendmail
でattachentsを送信するには、メールの内容をMIMEメッセージとしてフォーマットする必要があります。いくつかの例については、this forum thread on unix.comを参照してください。
あなたの方法であなたを取得するには、ここではbashを使用してクイックテストされていない例です。簡潔にするために、変数をハードコードしましたが、この例を引数として関連する変数を取るスクリプト/関数に簡単に変換できます。もちろん
#!/bin/bash
# --- user params ---
MAILFROM="[email protected]"
MAILTO="[email protected]"
SUBJECT="TPS Report"
BODY_FILE="/home/peter/coversheey.txt" # file holding mail body
ATT_FILE="/tnp/url_by_ip.txt" # file to attach
ATT_AS_FILE="Report.txt" # name to attach as
# --- generated values ---
BOUNDARY="unique-boundary-$RANDOM"
BODY_MIMETYPE=$(file -ib $BODY_FILE | cut -d";" -f1) # detect mime type
ATT_MIMETYPE=$(file -ib $ATT_FILE | cut -d";" -f1) # detect mime type
ATT_ENCODED=$(base64 < $ATT_FILE) # encode attachment
# --- generate MIME message and pipe to sendmail ---
cat <<EOF | /usr/sbin/sendmail $MAILTO
MIME-Version: 1.0
From: $MAILFROM
To: $MAILTO
Subject: $SUBJECT
Content-Type: multipart/mixed; boundary="$BOUNDARY"
--$BOUNDARY
Content-Type: $BODY_MIMETYPE
Content-Disposition: inline
$(cat $BODY_FILE)
--$BOUNDARY
Content-Type: $ATT_MIMETYPE; name="$ATT_AS_FILE"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="$ATT_AS_FILE"
$ATT_ENCODED
--$BOUNDARY
EOF
あなたがより高いレベルのスクリプト言語(PythonやRubyの、Perlを、...)を使用して満足している場合は、すでにあなたのための重い物を持ち上げるを行いますモジュールがexisitingされます。
p.s.あなたのためにMIME変換を行うmpackユーティリティもありますが、AFAIKはほとんどの* nixボックスにデフォルトでは付属していません。
ここSubject: here is the subject
電子メールを送信するスクリプトを::
はmail.txt例えばのようなあなたのメールヘッダーを持つファイルを作成します
#!/bin/bash
cat mail.txt > mail_to_send
cat attachment | uuencode attachment >> mail_to_send
sendmail [email protected] < mail_to_send
rm mail_to_send
はメールsendmailとないを使用する必要があります。 – bilkulbekar
なぜですか?私は両者にあまり差がないと思った。 CMIIW。 –