106805 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

(吉)のブログ

(吉)のブログ

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

キーワードサーチ

▼キーワード検索

プロフィール

tk106

tk106

カレンダー

楽天カード

お気に入りブログ

まだ登録されていません

コメント新着

コメントに書き込みはありません。

フリーページ

ニューストピックス

2011.01.25
XML
カテゴリ:カテゴリ未分類

一度にたくさんのメールを送信しなければならなくなったので、以下のようなスクリプトを書いてみました。

 
BUNC="MAIL.FROM.TXT"
FADR="MAIL.FROM.TXT"
TADR="MAIL.ADDR.TXT"
SUBJ="MAIL.SUBJECT.TXT"
MESS="MAIL.MESSAGE.TXT"

みたいに、予めデータを用意して、コマンド一発、今回は約13k通のメールを送信するのに約20分程度の時間で済みました。(もちろん、コマンド実行したあとは、20分間待っていただけ)

 

#!/bin/sh


#  -t: Toなどの指定を送信するドキュメント(データ)より利用する

#  -i: 送信するドキュメントのピリオド1つのみを無視する

#  -f: 送信エラーがあった時の連絡メール送信先

#

#  cat <<EOM | /usr/sbin/sendmail -t -i -f "sample_err_kanri@oi21.com"

#  From: sample_from@eigyou.0258.net

#  To: sample_to@iscb.net

#  Subject: test mail

#

#  This is contents!

#

#  EOM


# +++++++++++++++++++

# DEBG=1

# CHCK=1

# DEMO=1

# +++++++++++++++++++


# MAIL.ADDR.TXT

# MAIL.FROM.TXT

# MAIL.MESSAGE.TXT

# MAIL.SUBJECT.TXT

NKF="nkf"


BUNC="MAIL.FROM.TXT"

FADR="MAIL.FROM.TXT"

TADR="MAIL.ADDR.TXT"

SUBJ="MAIL.SUBJECT.TXT"

MESS="MAIL.MESSAGE.TXT"


if [ -f ${FADR} ];then FROM=`cat ${FADR}`; fi

if [ -f ${SUBJ} ];then SUBJECT=`cat ${SUBJ}`; fi

if [ -f ${BUNC} ];then BOUNCE=`cat ${BUNC}`; fi


# =====================================================================

PrintEnv(){

cat<<EOE

!!!!!!!!!!!!!!!!!!!!!!! DEBUG MODE !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"

\${NKF}   is ${NKF}

++++

\${TADR}  is ${TADR}

\${MESS}  is ${MESS}

\${FROM}  is ${FROM}

\${SUBJ}  is ${SUBJ}

\${SUBJECT}  is ${SUBJECT}

+++++++++++++++++++++++++

EOE

}


PrintMode(){

if [ ${CHCK} ]; then

    echo "================= CHECK MODE !! ========================="

elif [ ${DEMO} ]; then

    echo "***************** DEMO  MODE !! *************************"

fi

}

 

DispSendMess(){

if [ -z "$1" ]; then

   echo "DispSendMess():Paramater Error (\$1 is NULL?)"

   exit 124

fi


cat<<EOM

From: ${FROM}

To: ${1}

Subject: ${SUBJECT}


`cat ${MESS}`


EOM

}

# =====================================================================


if [ ${DEBG} ]; then

     PrintEnv; exit 99

else

     PrintMode

fi


# MAIN ROUTIN ==================================================


for ADDR in `cat ${TADR} | grep -v -e ^# -e ^$`;

do

   echo "*=> ${ADDR}" >&2

   if [ ${CHCK} ]; then

      continue

   elif

      [ ${DEMO} ]; then

      DispSendMess "${ADDR}"

   else

      DispSendMess "${ADDR}" | nkf -j | sendmail -t -i -f "${BOUNCE}"

   fi

done


exit 0

 






お気に入りの記事を「いいね!」で応援しよう

最終更新日  2011.01.25 15:45:22
コメント(0) | コメントを書く



© Rakuten Group, Inc.