EmailJP.pm -- Send mail with Net::SMTP (add Date: header)
# 簡単な使い方(ヘッダを参照して宛先アドレスを決定)
use EmailJP;
my $count = &EmailJP::sendmail( mail => $text );
# 最大限の使い方(宛先アドレスを明示的に指定する)
use EmailJP;
my $server;
$server = "127.0.0.1"; # SMTPサーバ
$server = [qw( 192.168.0.1 127.0.0.1 )]; # 複数指定可能
my $count = &EmailJP::sendmail(
server => $server, # SMTPサーバ
hello => "localhost", # HELLO
timeout => 5, # タイムアウト
return => $return_path, # エラー返送先
to => $rcpt_to, # メール宛先
head => $mail_head, # メールヘッダ
body => $mail_body, # メール本文
charset => "iso-2022-jp", # 送信文字コードは JIS
internal => "EUC-JP" # 内部文字コードは EUC
);
EmailJP モジュールは、日本語を含むメールを適切な形式で送信します。
sendmail() 関数では以下のオプションを指定できます。
server => SMTPサーバホストIPアドレス
EmailJP がメール送信する際、デフォルトで 127.0.0.1(自ホスト)に
SMTP 接続してメールを送信します。
SMTP 接続する先のメールサーバIPアドレスを変更する場合は、
server オプションで指定してください。
配列へのリファレンスで複数のメールサーバを列挙した場合は、
1つ目のメールサーバが停止している場合に
2つ目以降のメールサーバへ順に接続します。
基本的に利用可能なメールサーバを列挙しておくことをお勧めします。
hello => HELLO文字列
SMTP 接続時の HELO コマンドの引数を指定します。
デフォルトでは localhost となります。
このままでも通常は問題ありません。
timeout => タイムアウト秒数
SMTP 接続時のタイムアウト秒数を指定します。
return => エラー返信先アドレス
メール送信完了後にエラーが発生した場合に、
SMTP サーバから通知されるアドレスを指定します。
指定しない場合は、メールヘッダの Return-Path: 行が参照されます。
ただし、エラーメールが生成されるのは EmailJP の送信処理が成功した後で、
EmailJP の送信処理が失敗した場合は、単に偽が返ります。
to => メール宛先アドレス
メールの宛先アドレスを指定します。
指定しない場合は、メールヘッダの To: Cc: Bcc: 行が参照されます。
internal => 内部文字コード
sendmail() 関数を呼び出す側の文字コードは、
デフォルトで EUC-JP とみなします。
EUC-JP 以外の文字コード(UTF-8など)を使用している場合は、
internal オプションで指定してください。
Shift_JIS、UTF-8 などが使用できます。
charset => 送信文字コード
メール送信時の文字コードは、デフォルトで iso-2022-jp となります。
ただし、メール本文中に &#xHHHH; 形式の絵文字コードを含んでおり、
メールの宛先に NTT ドコモ携帯アドレスを含んで、
かつ au・TU-KA・Vodafone の携帯アドレスを含まない場合は、
NTT ドコモ用絵文字を文字化けなく受信させるため Shift_JIS となります。
それ以外の文字コードで送信したい場合は、charset オプションで
指定してください。
Shift_JIS、UTF-8 などが使用できます。
head => メールヘッダ body => メール本文
送信するメールのヘッダと本文を指定します。
メールヘッダと本文が予め合体している場合は、
下記の mail オプションを指定してください。
mail => メールヘッダ+本文
送信するメールのヘッダと本文を指定します。
ヘッダと本文の間には空行×1が必要です。
メールヘッダと本文が予め分離している場合は、
上記の head・body オプションを指定してください。
mail オプションまたは head オプションで指定されたヘッダ中に 必須のヘッダが無い場合は、下記のようなヘッダが自動付加されます。
(標準:JISの場合)
Date: Fri, 13 Jun 2003 03:17:01 +0900
MIME-Version: 1.0
Content-Type: text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding: 7bit
(Shift_JISの場合)
Date: Fri, 13 Jun 2003 03:17:01 +0900
MIME-Version: 1.0
Content-Type: text/plain; charset="Shift_JIS"
Content-Transfer-Encoding: 8bit
PC向けのメール中に、ハシゴ高や、立の崎字などの IBM 拡張漢字を含む場合も EscapeJIS.pm モジュールにより文字化けせずに送信できます。
CP932 UCS2 補足
------ ------ ----------
FBFC 9AD9 ハシゴ高
FAB1 FA11 山+立+可
FBB9 9127 とう小平
ただし、受信側のOS、メールソフトによっては正しく表示できない場合も あります。(Outlook Express・Becky! 2 では表示できます)
メール本文の文字コードは通常、ISO-2022-JP (JIS) となりますが、 メール本文中に &#xHHHH; 形式の絵文字コードを含んでおり、 メールの宛先に NTT ドコモ携帯アドレスを含んで、 かつ au・TU-KA・Vodafone の携帯アドレスを含まない場合は、 NTT ドコモ用絵文字を文字化けなく受信させるため Shift_JIS となります。
メール本文中に &#xHHHH; 形式の絵文字コードを含んでおり、 メールの宛先に au・TU-KA の携帯アドレスを含んで、 かつ NTT ドコモ・Vodafone の携帯アドレスを含まない場合は、 EmojiTrans.pm モジュールを利用して、 NTT ドコモ用の絵文字コードを au・TU-KA 用の似た絵文字コードに変換します。
メール本文中に &#xHHHH; 形式の絵文字コードを含んでおり、 メールの宛先に Vodafone の携帯アドレスを含んで、 かつ NTT ドコモ・au・TU-KA の携帯アドレスを含まない場合は、 EmojiTrans.pm モジュールを利用して、 NTT ドコモ用の絵文字コードを Vodafone 用の似た絵文字コードに変換します。
これにより、NTT ドコモ用の絵文字コードを含むメール本文を用意するだけで NTT ドコモ・au・TU-KA・Vodafone 全てのキャリアに対して絵文字を含むメールを 正常に送信することができます。
Copyright 2004 Kawasaki Yusuke <u-suke [at] kawa.net>
http://www.kawa.net/