2011-11-09 34 views
3

sendmailを使用して添付ファイル付きのメールを送信しようとしています。問題は私はこれに沿って件名を送ることができないということです。uuencodeでsendmailを使用してメールを送信し、件名と一緒に

次のコマンドラインは1つではなく、2通のメール発射 - 添付ファイル付きの "Subject : Report" と1、およびその他を:おそらく、あなたを

mail -s 'Report' [email protected] < tmp/url_by_ip.txt

答えて

0

はこれを試してみてくださいいくつかのユーティリティはMIMEメールを送信したいですか? vmime C++ libraryがあり、多くのスクリプト言語(Python、Ruby、Perl、Ocaml、...)にはMIME用のパッケージがあります。また、シェルスクリプトで使用できるコマンドもあります。 mpackなど多くのものがあります。

+0

はメールsendmailとないを使用する必要があります。 – bilkulbekar

+0

なぜですか?私は両者にあまり差がないと思った。 CMIIW。 –

0

/usr/bin/gmime-uuencode "/tmp/url_by_ip.txt" "Report.txt" | echo "Subject: Report" | /usr/sbin/sendmail <sender> <receiver> 
9

あなたは他のコマンドを使用することができる場合、私は非常に簡単に添付ファイルを扱うことができる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 

電子メールを送信するスクリプトを::

+0

ubuntu 10.04のMutt 1.5.20は、コマンドラインパラメータを次のように再構成した場合にのみ機能します: 'mutt -s"件名 "-a file_to_attach - [email protected] itsadok

+0

基本スクリプトは正常に動作します私のために、そして機能を使った少しのモジュール化を通じて、それはさらにエレガントです。 muttをインストールするよりもスクリプトでこれを使用することをお勧めします。 – Guss

2

は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 
関連する問題