Tripletail::HtmlMail - 指定されたURLからデータを取得し、HTMLメールを作成する。

# NAME

Tripletail::HtmlMail - 指定されたURLからデータを取得し、HTMLメールを作成する。

# SYNOPSIS

      my $mail = $TL->newHtmlMail
          ->setEventListener(\&log_func)
          ->setHeader(
    	  From    => 'null@example.org',
    	  To      => 'null@example.org',
    	  Subject => 'テストメール',
    	 )
          ->setTextURL('http://example.org/foo.txt')
          ->setHtmlURL('http://example.org/foo.html')
          ->setEnclose(1)
          ->makeMail;

# DESCRIPTION

HtmlMail クラスでは、名前等のテンプレート展開を行うための 支援機能をサポートしています。 （ここでいうテンプレート機能とは、名前等をメールに埋め込むことで、 Templateクラスの機能とは無関係です）

通常のタグをHTML中に書いてもBase64 エンコードされてしまうため、 そのままではテンプレート展開ができません。 また、1通ずつエンコードし直すのはパフォーマンス上の問題が発生します。

HtmlMail クラスでは、HTMLメール中の m/\0[^\0]+?\0/ にマッチする 文字列を特殊視します。この文字列が存在する場合、文字列の前後で分割し、 それぞれを Base64 エンコードします。

m/\0[^\0]+?\0/ にマッチした文字列はそのまま残るので、後に その部分に Base64 エンコードした文字列を埋め込むことで、 テンプレート展開を行うことができます。

テンプレート展開支援についての詳しい機能は、setPreprocessor メソッド のマニュアルを参照してください。

## メーラー対応状況

     項目                                    OutLook2000     OL Express 6    Becky! Ver2     Netscape4.78    Netscape6       YahooMail       HotMail         InfoseekMail
     文字コード：JIS                         ○              ○              ○              ○              ○              ○              ○              ○
     文字コード：SJIS                        ○              ○              ○              ○              ○              ○              ○              ×
     文字コード：EUC                         ○              ○              ○              ○              ○              ○              ○              ○
     文字コード：UTF-8                       ○              ○              ○              ×              ○              ×              ×              ×
     画像埋込                                ○              ○              ○              ○              ○              ×              ○              ×
     画像外部参照                            ○              ○              ○              ○              ○              ○              ○              ○(※2)
     EMBED（FLASH等）IFRAME埋込：外部        ○              ○              ×              ×              ○              ×              ×              ○
     EMBED（FLASH等）IFRAME埋込：埋込        ×              ×              ×              ×              ×              ×              ×              ×
     JavaApplet（IFRAME埋込）                ×              ×              ×              ×              ×              ×              ×              ×
     JavaApplet（IFRAME外部参照）            ○              ○              ×              ×              ○              ×              ×              ○
     リンクをクリックしたときの動作          別window        別window        同一window      別window        別window        別window        別window(※1)   同一flame
     フレームHTML外部参照                    ○              ○              ○              △(※3)         ×              ×              ×              ×
     フレームHTML埋込                        ×              ×              ○              △(※3)         ×              ×              ×              ×
     フレーム内画像埋込                      ×              ×              ×              ○(※3)         ×              ×              ×              ×
     FORM                                    ○(※6)         ○              ○              ○              ○(※7)         ○(※7)         ○(※1)         ○(※2)
     JavaScript：onLoadの動作                ×              △(※8)         ×              △(※9)         ×              ×              ×              ×
     JavaScriptの動作                        ×              △(※8)         ×              △(※9)         △(※9)         ×              ×              ×
     HTML内蔵CSS                             ○              ○              ○              ×(※4)         ○              ○              ×              △（※11）
     HTML内蔵CSS画像埋込                     ○              ○              ○              ×(※4)         ×              ×              ×              ×
     HTML内蔵CSS画像外部参照                 ○              ○              ○              ×(※4)         ○              △(※5)         ×              ×
     外部CSS                                 ○              ○              ○              ×              ○              ×              ×              ○(※2,※5)
     外部CSS画像埋込                         ○              ○              ○              ×              ×              ×              ×              ×
     外部CSS import外部参照                  ○              ○              ○              ×              ○              ×              ×              ○(※2)
     外部CSS import埋込                      ○              ○              ×              ×              ×              ×              ×              ×

     Becky! Ver1：HTML対応が非常に限定されているため，本ソフトで作成したHTMLメールは表示できません。
     @nifty：WebメールはHTMLに対応していません。

     ※１：上部にＭＳＮのメッセージが出現。
     ※２：対応する文字コードを使用したHTMLのみ可。
     ※３：NOFRAMEタグ内のHTMLを表示。
     ※４：表示が崩れる（ブラウザでは見られる）。
     ※５：背景画像がメール表示枠をはみ出る。
     ※６：フォーム入力の操作性に問題あり（誤操作によりメール削除する危険性アリ）。
     ※７：文字コードが一部崩れる可能性有り。
     ※８：セキュリティ設定が「インターネット」で且つ、インターネットのセキュリティレベルが「中」の時に可。
     ※９：詳細設定にて、「メールとニュースでJavaScriptを使用する」がチェックされていれば可。
     ※10：添付は可能、実行はJavaセキュリティによる可否あり。
     ※11：背景画像の使用は不可能。

2005年1月現在

## METHODS

$TL->newHtmlMail

        $htmlmail = $TL->newHtmlMail

  Tripletail::HtmlMail オブジェクトを作成。

init

        $htmlmail->init

  メールオブジェクトを初期化します。 インスタンスの create 直後と同じ状態になります。

setProxy

        $htmlmail->setProxy($PROXY)

  $PROXY : 使用するプロキシ "host:port" 形式。

  undef を指定するとダイレクト接続になります。

setEventListener

        $htmlmail->setEventListener(\&FUNC)

  イベントリスナーを設定します。 HTML取得等のイベントに従って、リスナー関数が呼び出され、 第１引数にメッセージが渡されます。

  メッセージはHTML形式で返されます。

setPreprocessor

  プリプロセッサを指定します。 HtmlMailクラスは、データを受信すると、各種加工処理の前に プリプロセッサ関数を呼び出します。

  デフォルトでは、NULL 文字をカットする関数が設定されます。 （これはテンプレート展開支援機能の誤動作を防ぐためです）

  プリプロセッサ関数は、第１引数に Content-Type、第２引数に データ内容を受け取り、データを返します。

  このとき、タグとして扱いたい部分を、m/\0[^\0]+?\0/ に マッチする文字列に置き換えます。

  デフォルトで設定される関数は下記のコードです。

       sub _deleteNullPreprocessor {
         my $ctype = shift;
         my $data = shift;

         if($ctype =~ m,^text/,i)
           {
             $data =~ tr/\0//d;
           }

         $data;
       }

  HTML・テキスト・画像等、全てのコンテンツタイプのデータで 呼び出されるため、必ず第１引数の内容を確認して動作を 振り分けてください。

  テキストは、メール生成時に自動的にJISに変換されますが、 その他のコンテンツはコード変換されません。

  埋め込むときに漢字コードを判別する必要があるので、 HTMLメールの場合は、後の展開処理用に漢字コードをタグの中に 埋め込んでおく必要があります。

setTimeout

        $htmlmail->setTimeout($SEC)

  外部サーバーからデータを取得するときのタイムアウト秒数を 設定します。

  setTimeoutメソッドを使用しなかった場合は、デフォルト値として 60 秒が設定されます。

setTextURL

        $htmlmail->setTextURL($URL)

  テキストドキュメントを取得するURLを指定します。

  Content-Type は強制的に text/plain とされます。 URL におかれたコンテンツが正しい Content-Type で あるかどうかはチェックされません。

setHtmlURL

        $htmlmail->setHtmlURL($URL)

  HTMLドキュメントを取得するURLを指定します。

  URL におかれたコンテンツが正しい Content-Type で あるかどうかはチェックされません。

setEnclose

        $htmlmail->setEnclose($FLAG)

  関連ファイルをメールに埋め込むかどうか指定します。 埋め込みは、ブラウザによって正しく表示できないことがあります。

  0の場合、関連ファイルは埋め込まず、絶対URLに変換する。 1の場合、関連ファイルを埋め込み、CID(Content-ID)に変換する。

  デフォルトは0。

setLinkAbs

        $htmlmail->setLinkAbs($FLAG)

  HTML/CSS中のリンクを絶対URLに加工するかどうかを選択します。 加工しない場合、元のHTMLのリンクが全て絶対URLになっている 必要があります。

  加工する場合、HTMLは再パースされるため、 JavaScript や、不正なタグが入っている場合に正しく 再構成されない場合があります。

  0の場合、HTML/CSSへの加工を行わない。 1の場合、HTML/CSS中のリンクを絶対URLに加工する。

  デフォルトは1。

setHeader

        $htmlmail->setHeader(%HEADER)

  メールのヘッダを指定します。

makeMail

        $MAIL = $htmlmail->makeMail

  メール文書を生成します。

  生成中に発生したイベントは、setEventListener でリスナーが 設定されていれば、そこに送られます。

  メール文書生成中にエラーが発生するとundef が返り、 getError でエラーメッセージが取得できるようになります。

getError

        $ERROR = $htmlmail->getError

  発生したエラー内容を取得します。

# SEE ALSO

Tripletail
Tripletail::Mail
Tripletail::Sendmail

# AUTHOR INFORMATION

Copyright 2006 YMIRLINK Inc.

This framework is free software; you can redistribute it and/or modify it under the same terms as Perl itself

このフレームワークはフリーソフトウェアです。あなたは Perl と同じライセンスの 元で再配布及び変更を行うことが出来ます。

Address bug reports and comments to: tl@tripletail.jp

HP : http://tripletail.jp/

Tripletail::HtmlMail - 指定されたURLからデータを取得し、HTMLメールを作成する。

# INDEX

- $TL->newHtmlMail
- AUTHOR INFORMATION
- DESCRIPTION
- METHODS
- NAME
- SEE ALSO
- SYNOPSIS
- Tripletail
- Tripletail::Mail
- Tripletail::Sendmail
- getError
- init
- makeMail
- setEnclose
- setEventListener
- setHeader
- setHtmlURL
- setLinkAbs
- setPreprocessor
- setProxy
- setTextURL
- setTimeout
- メーラー対応状況

Tripletail::HtmlMail - 指定されたURLからデータを取得し、HTMLメールを作成する。