このスクリプトは無保証です、念のため。
例えば、こういうCSVファイルがあったとして
鈴木一郎,ichiro@hogehoge.com,userid0001,xko2magk,メールのTo: にそれぞれのメールアドレスを挿入し、こうしたメール本文↓に相手先の使命や、ID、パスワードなどを挿し込んでいきます(パスワードをメールに記述することは本来望ましくありませんが)。
上原浩治,uehara@funyafunya.org,userid0002,d8namdw2,
岩隈久志,iwakuma@bashabasha.net,userid0003,yuA7qle C,
member_name 様member_name のところにCSV1列目の氏名を、
平素はご利用ありがとうございます。
弊社Webサイトのお客様ページへのmember_name 様のログイン情報をご案内します。
ーーーーーーーーーーーーーーーーー
ユーザー名:member_ID
パスワード:member_passwd
ーーーーーーーーーーーーーーーーー
member_IDのところにCSV2列目のログインIDを、
member_passwdのところにCSV3列目のパスワードを
それぞれ挿し込んで、順次送信していきます。
なお、今回のスクリプトは、前回と同様に コマンドラインでのメール送信にmailコマンドではなくmuttを使います。
今回はmuttの設定には触れませんので、設定方法は他を参照してください。
- Mac OS X leopardにmutt + fetchmail + procmail + msmtp + Gmailの環境を作る
- Linux Japan 誌掲載記事
- mutt + fetchmail + procmailを使う
以下、スクリプトです。行頭の番号は行数の目安と、説明のために便宜的に付けているので、実際にスクリプトを書くときには削除してください。また、ファイル名やPATHなどは適宜読み替えてください。
1 #!/bin/sh2:CSVファイルの指定
2 listfile="$HOME/list.csv"
3 if [ ! -f $listfile ]; then
4 echo "Recipient list file $listfile does not exist.."
5 exit 1
6 fi
7
8 mailfile="$HOME/mailbody.txt"
9 if [ ! -f $mailfile ]; then
10 echo "Mail body file $mailfile does not exist.."
11 exit 1
12 fi
13
14 subject=`head -n 1 $mailfile | nkf -m`
15 cat ${listfile} | while read line
16 do
17 name=`echo $line | cut -d"," -f 1`
18 to=`echo $line | cut -d"," -f 2`
19 usernm=`echo $line | cut -d"," -f 3`
20 passwd=`echo $lin3 | cut -d"," -f 4`
21 contents=`/usr/bin/tail -n +2 $mailfile | sed -e "s/member_name/$name /g" | sed -e "s/member_ID/$usernm/g" | sed -e "s/member_passwd/$passwd/g"`
22 echo "$contents" | nkf | mutt -s "$subj ect" "$to" -a "$1"
23 if [ $? -eq 1 ]; then
24 echo "send mail failure $to"
25 exit 1
26 fi
27
28 echo "send mail success $to"
29 sleep 15
30 done
31 exit
3〜6:$listfileがなかった場合に吐くメッセージ。
8:メールサブジェクトと本文のテキスト指定。1行目がSubject、2行目以降が本文。
9〜12:$mailfileがなかった場合に吐くメッセージ。
14:$mailfileの一行目をsubjectに指定する。文字化けしないようにnkfコマンドで日本語コードを調整。お手元の環境に応じて適宜変更してください。
15:$listfileを一行ごと読み出し、whileで繰り返す。
17:$listfileから1列目の氏名をcutコマンドで切り出す。
18:$listfileから2列目のメールアドレスをcutコマンドで切り出す。
19:$listfileから3列目のユーザーIDをcutコマンドで切り出す。
20:$listfileから4列目のパスワードをcutコマンドで切り出す。
21:tailコマンドで、メール本文は2行目からと指定し、sed -e コマンドで本文中のmember_name、member_ID、member_passwdをそれぞれ置換する。
22:上記までで整えた本文をnkfをかまして、文字化け回避。お手元の環境に応じて適宜変更してください。そしてmuttに渡して送信。「-a "$1"」は添付ファイルをする場合のおまけで、スクリプト実行の際、引数として添付ファイルを指定してください。添付ファイル不要の場合は削除可の記述です。
23〜26:メールが送信できなかった場合に吐くメッセージ。
28:メール送信が成功した場合に吐くメッセージ。
29:送信間隔の指定。スパム対策のため時間当たりのメール発信数を制限しているSMTPがあるので、制限に応じたインターバルを設定する。
参考情報
お忙しい中、スクリプト作成の相談にのってくださり、多くの助言をくださった、K.O氏に感謝。
0 件のコメント:
コメントを投稿