ホーム » スタッフ » 斉藤徹 » (専攻科実験)Perlでのメール送信

2013年11月
« 10月   12月 »
 12
3456789
10111213141516
17181920212223
24252627282930

最近の投稿(電子情報)

アーカイブ

カテゴリー

(専攻科実験)Perlでのメール送信

専攻科の実験で、RSS による情報フィードの活用のテーマのプログラム作成中。 実験学生が、作ってみたいプログラムの案にメールの事例が多かったので、 メールの送信方法について記載しておく。

もっとも簡単なメール送信例

メールを送るためには、メール形式について理解が必要となるので、以下の資料参照。

特に、日本語などの様々な言語でメールを送る場合には、 メールヘッダの"Content-Type:… charset=…"によって、送信する文字コードなどを 指定すれば良い。ただし、日本の古いガラケーでは、JIS コード以外だと文字化けする 場合も多いため、特に問題がないのなら日本語でメールを送るには、 JISコード(ISO-2022-JP)にすべきである。

以下に、最も単純な日本語メールを送るサンプルプログラムを示す。

#!/usr/bin/perl
use Jcode ;
use Email::MIME ;
use Email::MIME::Creator ;
# メールの形式に応じたデータを作る
my $mail = Email::MIME->create(
# メールヘッダの必須パラメータ
header => [ # (注) headerは配列へのリファレンス
# "foo@example.co.jp"と書くと
# @exampleの部分が配列とみなされるので''を使う。
From => 'foo@example.co.jp' ,
To   => 'bar@example.co.jp' ,
# ヘッダでの漢字は、MIME形式でエンコードしないとダメ。
Subject => Jcode->new( "実験" )->mime_encode() ,
] ,
# その他のパラメータ
attributes => {     # (注) attributesはハッシュへのリファレンス
content_type => 'text/html' ,
charset      => 'ISO-2022-JP' ,
encoding     => '7bit' ,
} ,
# メールの本文
body => Jcode->new( "こんにちは" )->jis
) ;
# sendmail を使ってメールを送る。
#   "-t" オプションをつけるとヘッダ部を追加できる
#   open( FH , "|..." ) で出力をプログラムにパイプで渡す。
open( FH , "| /usr/sbin/sendmail -t" )
or die( "Can't open sendmail" ) ;
print FH $mail->as_string ;
close( FH ) ;