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/