« [perl] やる夫が数値判定するプログラムを組んだようです。 | トップページ | [perl] やる夫が改行を取り除くようです。 »

2008-07-09

[perl] やる夫がテンプレートを利用したメール送信プログラムを作成したようです。

テンプレートを利用したメール送信サンプルプログラム

perl moduleをいくつか利用します。指定しないと下記のようなメッセージで起こられてしまいます。

Can't locate object method "new" via package

templateファイルと、本体プログラムが必要となります。ちなみにメールは送信できる環境のものとします。外のメールアドレスに送る場合は、外フィルタが開いていないとだめです。そんなに気にしなくてもよいと思いますが・・・。

       ____
     /      \
   /  _ノ  ヽ、_  \
  / o゚((●)) ((●))゚o \  ほんとはrubyとかjavaを書きたいんだお・・・
  |     (__人__)    |
  \     ` ⌒´     /

       ____
     /      \
   /  _ノ  ヽ、_  \
  /  o゚⌒   ⌒゚o  \  でもrubyは、リア充言語だから、やる夫には向いてないお
  |     (__人__)    |
  \     ` ⌒´     /

       ____
     /⌒  ⌒\
   /( ●)  (●)\
  /::::::⌒(__人__)⌒::::: \   だからperlでやるお!
  |     |r┬-|     |
  \      `ー'´     /

なんとなくですが、rubyとかjavaはリア充言語のような印象があります。今の会社に勤めてから、全くプログラムを書いていません。昔はマクロ一筋でしたが、それもしていない・・・。最近ちょっとだけperlを勉強し始めました。

プログラム

# vi mail.pl
-----
#!/usr/local/bin/perl
### module specification
use strict;
use MIME::Lite;
use Template;

### parameter
my @message = (
    {
        yaruo => 'yaruo mail',
        yaranaio => 'yaranaio mail',
    },
    {
        yaruo => 'test mail',
        yaranaio => 'test mail',
    }
);

### tempate set
my $template = Template->new;
my $output;

$template->process(
    'yaruo.txt',
    {message=>\@message},
    \$output,
);

### mail header
my $msg = MIME::Lite->new(
    Type     => 'multipart/alternative',
    Subject  => 'Subject test_mail',
    From     => 'hogehoge@neet.com',
    To       => 'yaruo@neet.com',
    Encoding => '8bit',
);

### html
$msg->attach(
    Type    => 'text/html; charset=\'utf-8\'',
    Data    => $output,
);

### text
$msg->attach(
    Type    => 'text/plain; charset=\'utf-8\'',
    Data    => 'please refer to the html mail.',
);

$msg->send();
-----

なるべくシンプルに作成したつもりです。カスタマイズするには、”### parameter”と”### mail header”箇所を変更すればよい感じだと思います。

テンプレートファイル

# vi yaruo.txt
-----
<html>
<body>
[% FOREACH p = message -%]

<font color="#FFFF00">[% p.yaruo %]</font>
<font color="#FF0000">[% p.yaranaio %]</font>

[% END -%]
</body>
</html>
-----

プログラム実行

# ./mail.pl

特にメッセージなし、問題なければ指定したアドレスにメールが送信されている筈。こんなhtmlメールが届く。

Html

|

« [perl] やる夫が数値判定するプログラムを組んだようです。 | トップページ | [perl] やる夫が改行を取り除くようです。 »

perl」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/488651/22174678

この記事へのトラックバック一覧です: [perl] やる夫がテンプレートを利用したメール送信プログラムを作成したようです。:

« [perl] やる夫が数値判定するプログラムを組んだようです。 | トップページ | [perl] やる夫が改行を取り除くようです。 »