The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xml:lang="ja-JP">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <link rel="stylesheet" type="text/css" href="../style.css" />
  <title>Tripletail::HtmlMail - 指定されたURLからデータを取得し、HTMLメールを作成する。</title>
  <link rel="index"     href="./" />
  <link rel="up"        href="../" />
</head>
<body>

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


</div>

<!-- Begin TABLE_OF_CONTENTS -->
<div class="pod_toc">
<p>
<strong><span class="pod_lang">TABLE OF CONTENTS</span></strong>
</p>
<ul>
<li><a href="#NAME">
<span class="pod_lang">NAME

</span></a>
</li>
<li><a href="#SYNOPSIS">
<span class="pod_lang">SYNOPSIS

</span></a>
</li>
<li><a href="#DESCRIPTION">
<span class="pod_lang">DESCRIPTION

</span></a>
<ul>
<li><a href="#Xe3X83Xa1Xe3X83XbcXe3X83Xa9Xe3X83XbcXe5XafXbeXe5XbfX9cXe7X8aXb6Xe6Xb3X81">
<span class="pod_lang">メーラー対応状況

</span></a>
</li>
<li><a href="#METHODS">
<span class="pod_lang">METHODS

</span></a>
</li>
</ul>
</li>
<li><a href="#SEE_ALSO">
<span class="pod_lang">SEE ALSO

</span></a>
</li>
<li><a href="#AUTHOR_INFORMATION">
<span class="pod_lang">AUTHOR INFORMATION

</span></a>
</li>
</ul>
</div>
<!-- End TABLE_OF_CONTENTS -->

<!-- Begin CONTENT -->
<!-- =encoding utf-8 -->

<hr />
<h1><a id="NAME">
<span class="pod_lang">NAME

</span></a></h1>

<p>
<span class="pod_lang">Tripletail::HtmlMail - 指定されたURLからデータを取得し、HTMLメールを作成する。

</span>
</p>


<hr />
<h1><a id="SYNOPSIS">
<span class="pod_lang">SYNOPSIS

</span></a></h1>

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


<hr />
<h1><a id="DESCRIPTION">
<span class="pod_lang">DESCRIPTION

</span></a></h1>

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

</span>
</p>

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

</span>
</p>

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

</span>
</p>

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

</span>
</p>

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

</span>
</p>

<h2><a id="Xe3X83Xa1Xe3X83XbcXe3X83Xa9Xe3X83XbcXe5XafXbeXe5XbfX9cXe7X8aXb6Xe6Xb3X81">
<span class="pod_lang">メーラー対応状況

</span></a></h2>

<pre class="pod_verbatim"><code> 項目                                    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に対応していません。
 
 ※1:上部にMSNのメッセージが出現。
 ※2:対応する文字コードを使用したHTMLのみ可。
 ※3:NOFRAMEタグ内のHTMLを表示。
 ※4:表示が崩れる(ブラウザでは見られる)。
 ※5:背景画像がメール表示枠をはみ出る。
 ※6:フォーム入力の操作性に問題あり(誤操作によりメール削除する危険性アリ)。
 ※7:文字コードが一部崩れる可能性有り。
 ※8:セキュリティ設定が「インターネット」で且つ、インターネットのセキュリティレベルが「中」の時に可。
 ※9:詳細設定にて、「メールとニュースでJavaScriptを使用する」がチェックされていれば可。
 ※10:添付は可能、実行はJavaセキュリティによる可否あり。
 ※11:背景画像の使用は不可能。</code></pre>

<p>
<span class="pod_lang">2005年1月現在

</span>
</p>

<h2><a id="METHODS">
<span class="pod_lang">METHODS

</span></a></h2>

<dl>
<dt><a id="X$TL->newHtmlMail"><span class="pod_lang">$TL-&gt;newHtmlMail

</span></a></dt>
<dd>
<pre class="pod_verbatim"><code>  $htmlmail = $TL-&gt;newHtmlMail</code></pre>

<p>
<span class="pod_lang">Tripletail::HtmlMail オブジェクトを作成。

</span>
</p>

</dd>
<dt><a id="init"><span class="pod_lang">init

</span></a></dt>
<dd>
<pre class="pod_verbatim"><code>  $htmlmail-&gt;init</code></pre>

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

</span>
</p>

</dd>
<dt><a id="setProxy"><span class="pod_lang">setProxy

</span></a></dt>
<dd>
<pre class="pod_verbatim"><code>  $htmlmail-&gt;setProxy($PROXY)</code></pre>

<p>
<span class="pod_lang">$PROXY : 使用するプロキシ &quot;host:port&quot; 形式。

</span>
</p>

<p>
<span class="pod_lang">undef を指定するとダイレクト接続になります。

</span>
</p>

</dd>
<dt><a id="setEventListener"><span class="pod_lang">setEventListener

</span></a></dt>
<dd>
<pre class="pod_verbatim"><code>  $htmlmail-&gt;setEventListener(\&amp;FUNC)</code></pre>

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

</span>
</p>

<p>
<span class="pod_lang">メッセージはHTML形式で返されます。

</span>
</p>

</dd>
<dt><a id="setPreprocessor"><span class="pod_lang">setPreprocessor

</span></a></dt>
<dd>
<p>
<span class="pod_lang">プリプロセッサを指定します。
HtmlMailクラスは、データを受信すると、各種加工処理の前に
プリプロセッサ関数を呼び出します。

</span>
</p>

<p>
<span class="pod_lang">デフォルトでは、NULL 文字をカットする関数が設定されます。
(これはテンプレート展開支援機能の誤動作を防ぐためです)

</span>
</p>

<p>
<span class="pod_lang">プリプロセッサ関数は、第1引数に Content-Type、第2引数に
データ内容を受け取り、データを返します。

</span>
</p>

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

</span>
</p>

<p>
<span class="pod_lang">デフォルトで設定される関数は下記のコードです。

</span>
</p>

<pre class="pod_verbatim"><code> sub _deleteNullPreprocessor {
   my $ctype = shift;
   my $data = shift;
 
   if($ctype =~ m,^text/,i)
     {
       $data =~ tr/\0//d;
     }
 
   $data;
 }</code></pre>

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

</span>
</p>

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

</span>
</p>

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

</span>
</p>

</dd>
<dt><a id="setTimeout"><span class="pod_lang">setTimeout

</span></a></dt>
<dd>
<pre class="pod_verbatim"><code>  $htmlmail-&gt;setTimeout($SEC)</code></pre>

<p>
<span class="pod_lang">外部サーバーからデータを取得するときのタイムアウト秒数を
設定します。

</span>
</p>

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

</span>
</p>

</dd>
<dt><a id="setTextURL"><span class="pod_lang">setTextURL

</span></a></dt>
<dd>
<pre class="pod_verbatim"><code>  $htmlmail-&gt;setTextURL($URL)</code></pre>

<p>
<span class="pod_lang">テキストドキュメントを取得するURLを指定します。

</span>
</p>

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

</span>
</p>

</dd>
<dt><a id="setHtmlURL"><span class="pod_lang">setHtmlURL

</span></a></dt>
<dd>
<pre class="pod_verbatim"><code>  $htmlmail-&gt;setHtmlURL($URL)</code></pre>

<p>
<span class="pod_lang">HTMLドキュメントを取得するURLを指定します。

</span>
</p>

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

</span>
</p>

</dd>
<dt><a id="setEnclose"><span class="pod_lang">setEnclose

</span></a></dt>
<dd>
<pre class="pod_verbatim"><code>  $htmlmail-&gt;setEnclose($FLAG)</code></pre>

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

</span>
</p>

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

</span>
</p>

<p>
<span class="pod_lang">デフォルトは0。

</span>
</p>

</dd>
<dt><a id="setLinkAbs"><span class="pod_lang">setLinkAbs

</span></a></dt>
<dd>
<pre class="pod_verbatim"><code>  $htmlmail-&gt;setLinkAbs($FLAG)</code></pre>

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

</span>
</p>

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

</span>
</p>

<p>
<span class="pod_lang">0の場合、HTML/CSSへの加工を行わない。
1の場合、HTML/CSS中のリンクを絶対URLに加工する。

</span>
</p>

<p>
<span class="pod_lang">デフォルトは1。

</span>
</p>

</dd>
<dt><a id="setHeader"><span class="pod_lang">setHeader

</span></a></dt>
<dd>
<pre class="pod_verbatim"><code>  $htmlmail-&gt;setHeader(%HEADER)</code></pre>

<p>
<span class="pod_lang">メールのヘッダを指定します。

</span>
</p>

</dd>
<dt><a id="makeMail"><span class="pod_lang">makeMail

</span></a></dt>
<dd>
<pre class="pod_verbatim"><code>  $MAIL = $htmlmail-&gt;makeMail</code></pre>

<p>
<span class="pod_lang">メール文書を生成します。

</span>
</p>

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

</span>
</p>

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

</span>
</p>

</dd>
<dt><a id="getError"><span class="pod_lang">getError

</span></a></dt>
<dd>
<pre class="pod_verbatim"><code>  $ERROR = $htmlmail-&gt;getError</code></pre>

<p>
<span class="pod_lang">発生したエラー内容を取得します。

</span>
</p>

</dd>
</dl>


<hr />
<h1><a id="SEE_ALSO">
<span class="pod_lang">SEE ALSO

</span></a></h1>

<dl>
<dt><a id="X_"><span class="pod_lang"><a href=".././Tripletail.html">Tripletail</a>

</span></a></dt>
<dd>
</dd>
<dt><a id="X__00"><span class="pod_lang"><a href="http://search.cpan.org/perldoc/Tripletail::Mail">Tripletail::Mail</a>

</span></a></dt>
<dd>
</dd>
<dt><a id="X__01"><span class="pod_lang"><a href="http://search.cpan.org/perldoc/Tripletail::Sendmail">Tripletail::Sendmail</a>

</span></a></dt>
<dd>
</dd>
</dl>


<hr />
<h1><a id="AUTHOR_INFORMATION">
<span class="pod_lang">AUTHOR INFORMATION

</span></a></h1>

<ul>
<p>
<span class="pod_lang">Copyright 2006 YMIRLINK Inc.

</span>
</p>

<p>
<span class="pod_lang">This framework is free software; you can redistribute it and/or modify it under the same terms as Perl itself

</span>
</p>

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

</span>
</p>

<p>
<span class="pod_lang">Address bug reports and comments to: tl@tripletail.jp

</span>
</p>

<p>
<span class="pod_lang">HP : http://tripletail.jp/

</span>
</p>

</ul>

<!-- End CONTENT -->

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


</div>

<!-- Begin INDEX -->
<hr />
<h1><a id="INDEX"><span class="pod_lang">INDEX</span></a></h1>
<div class="pod_idx_outer">
<ul class="pod_idx">
<li><a href="#X$TL->newHtmlMail">$TL-&gt;newHtmlMail</a></li>
<li><a href="#AUTHOR_INFORMATION">AUTHOR INFORMATION</a></li>
<li><a href="#DESCRIPTION">DESCRIPTION</a></li>
<li><a href="#METHODS">METHODS</a></li>
<li><a href="#NAME">NAME</a></li>
<li><a href="#SEE_ALSO">SEE ALSO</a></li>
<li><a href="#SYNOPSIS">SYNOPSIS</a></li>
<li><a href="#X_">Tripletail</a></li>
<li><a href="#X__00">Tripletail::Mail</a></li>
<li><a href="#X__01">Tripletail::Sendmail</a></li>
<li><a href="#getError">getError</a></li>
<li><a href="#init">init</a></li>
<li><a href="#makeMail">makeMail</a></li>
<li><a href="#setEnclose">setEnclose</a></li>
<li><a href="#setEventListener">setEventListener</a></li>
<li><a href="#setHeader">setHeader</a></li>
<li><a href="#setHtmlURL">setHtmlURL</a></li>
<li><a href="#setLinkAbs">setLinkAbs</a></li>
<li><a href="#setPreprocessor">setPreprocessor</a></li>
<li><a href="#setProxy">setProxy</a></li>
<li><a href="#setTextURL">setTextURL</a></li>
<li><a href="#setTimeout">setTimeout</a></li>
<li><a href="#Xe3X83Xa1Xe3X83XbcXe3X83Xa9Xe3X83XbcXe5XafXbeXe5XbfX9cXe7X8aXb6Xe6Xb3X81">メーラー対応状況</a></li>
</ul>
</div>
<!-- End INDEX -->

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


</div>

</body>
</html>