ノリブログ?

「メール自動返信プログラム」のテストプログラムを作成

カテゴリー:Linux

以前、上の2つの記事でメール返信プログラムの作成方法について紹介しました。
今回そのプログラムのテストを行うためのプログラムを作成したので、それについての記事を書きたいと思います。

getmail

今回のプログラムには「メールの内容を受信してチェック」という動作が必要なので、その部分を作成するためにgetmailコマンドを使用しました。

公式サイト 
http://pyropus.ca/software/getmail/

彼の野原 - Mail/getmail(インストール方法と基本卯的な使い方に関する日本語の説明あり)
http://kano.feena.jp/?Mail%2Fgetmail

テストプログラムの仕様

testuser@nanbu.comがautoresponse@nanbu.comに空メール送信
autoresponse@nanbu.comが上のメールを受信するとtestuser@nanbu.comに案内メールを送信
という状況をテストするための以下のような動作を行うプログラムを作成しました。

  1. getmailでtestuser@nanbu.comの現在のメールを~/ReceiveOtherMail.maildata/newに受信
  2. 空メールをtestuser@nanbu.comからautoresponse@nanbu.comに送信
  3. ~/ReceiveWelcomeMail.maildata/newの中身を削除
  4. getmailでtestuser@nanbu.comの新規メールを~/ReceiveWelcomeMail.maildata/newに受信
  5. ~/ReceiveWelcomeMail.maildata/newにファイルが入っており、そのファイルの内容が案内メールの内容と一致すれば[OK]を出力

テスト用以外のメールがとどいていることを考えて、1で現在のメールを受信して、それを適当なフォルダ(上では~/ReceiveOtherMail.maildata/new)に保存します。その後、2で空メールを送って、4で確認したいメールを~/ReceiveWelcomeMail.maildata/newに保存します3で一度~/ReceiveWelcomeMail.maildata/newディレクトリの中身を削除しているのは、そうすることでファイルが存在すればメールが受信できているということになるので、受信の成功・失敗の確認が簡単になるからです。

 テストプログラムのコード例

以下のようなシェルスクリプトファイルを作成しました。

#getmailでtestuser@nanbu.comの現在のメールを~/ReceiveOtherMail.maildata/newに受信
echo "now checking mail....[testuser@nanbu.com]"
getmail --rcfile="/home/testuser/tf/ReceiveOtherMail.getmailrc" -a -l

#空メールをtestuser@nanbu.comからautoresponse@nanbu.comに送信
echo "Mime-Version: 1.0" > tf-thoiku00001.mailstring
echo "Content-Type: Text/Plain; charset=iso-2022-jp" >> tf-thoiku00001.mailstring
echo "Content-Transfer-Encoding: 7bit" >> tf-thoiku00001.mailstring
echo "To: autoresponse@nanbu.com" >> tf-thoiku00001.mailstring
echo "Reply to: testuser@nanbu.com" >> tf-thoiku00001.mailstring
echo "From: testuser@nanbu.com" >> tf-thoiku00001.mailstring
echo "Subject: テストメール" | nkf -M >> tf-thoiku00001.mailstring
echo "X-Mailer: Test driver for xxx mail system" >> tf-thoiku00001.mailstring
echo "" >> tf-thoiku00001.mailstring
echo "本文 てすと body部" | nkf -j >> tf-thoiku00001.mailstring

echo "now sending mail to autoresponse@nanbu.com";
cat tf-thoiku00001.mailstring| mail autoresponse@nanbu.com

#sleep for receiving mail
sleep 3

#getmailでtestuser@nanbu.comの新規メールを~/ReceiveWelcomeMail.maildata/newに受信して内容一致
echo "now checking welcome mail from autoresponse@nanbu.com";
rm /home/thoiku/tf/tf-thoiku00001-ReceiveWelcomeMail.maildata/new/*
getmail --rcfile="/home/testuser/tf/ReceiveWelcomeMail.getmailrc" -n
tail -1  /home/thoiku/tf/tf-thoiku00001-ReceiveWelcomeMail.maildata/new/* | sed 's/http://www.awakko.net/return.php?mail=xxxxxxxxxxx/[OK]/g'

一回目と二回目のgetmailでrcファイルがReceiveOtherMail.getmailrcとReceiveWelcomeMail.getmailrcというふうに違っているのは、上の仕様で書いたように受信ディレクトリの場所を変えるためです。rcファイルの設定内容は受信ディレクトリの設定以外は同じになっています。

 

関連記事

Track Back URL

name
E-mail(省略可)
URL(省略可)
コメント