2011/04/08

処理完了などのイベントをメールで知らせる

最近のアップデートで、SMTP/POP3サーバに接続してメールの送受信を行う「Mail」ユニットが追加されました。
この機能を使えば、自動処理の完了など何らかのイベントの発生時にメールを送信して知らせたり、外出先からメールで送信した指令に応じて自動処理を行うことなどが可能になります。

SMTPクラスによるメール送信の基本的な手順は以下の通りです。
try{
    var smtp=new (require('Mail').SMTP)({
        host:'vm01xp',
        user:'test',
        password:'asdf',
        pop:true,
    });
    
    smtp.send({
        subject:'テストメール',
        from:'test@example.com',
        to:"test@example.com',
        encoding:'iso-2022-jp',
        message:"テスト本文",
    });
}finally{
    free(smtp);
}

まず、SMTPクラスのコンストラクタにホスト名やユーザー、パスワードなどのオプションを与えて呼び出し、インスタンスオブジェクトを得ます。この時、サーバとの接続が確立され、ログイン処理などが行われます。
POP before SMTPを使用するには、オプションに「pop:true」を指定します。未指定時はSMTPのコマンドによる認証が行われます。

こうして得たSMTPオブジェクトのsend()メソッドに、件名や宛先、本文などを指定するオプションオブジェクトを与えて実行することで、メールの送信が実行されます。
「encoding:'iso-2022-jp'」は、本文や件名を日本語の7ビット文字コードとして一般的なiso-2022-jpでエンコードすることを指定しています。
未指定時はutf-7でエンコードされますが、古い日本製のメールソフトなどではデコードできないかもしれないので、人間に読ませる日本語メールを送信する場合はこのオプションを指定しておいた方がよいでしょう。

メールの送信が終ったら、「free(smtp)」のようにしてサーバからの切断を行います。
この処理は、エラー発生時でも確実に実行されるように、try...finallyのfinally説で実行するようにします。

その他の細かな機能の説明などは、NILScriptに同梱のdoc\Mail.txtを参照して下さい。

0 件のコメント:

コメントを投稿