テキストの本文を構築して本文を取得する

広告

Mail_Mimeクラスを使用する場合に本文を設定するにはテキストメールを使う場合とHTMLメールを使う場合で作り方が異なります。ここでは本文がテキストのメールを作成する方法を確認します。

まず本文を設定します。Mail_Mimeクラスで用意されている「setTxtBody」メソッドを使います。

引数:
  $data  本文を表す文字列。又は本文を表すファイル名
  $isfile  1番目の引数がファイル名の場合にはtrueを指定
戻り値:
  成功時には TRUE、失敗時にはPEAR_Error

1番目の引数に本文として設定したい文字列を指定します。1番目の引数にはファイル名を指定することもでき、その場合は2番目の引数に「true」を設定して下さい。

「setTxtBody」メソッドを使う場合でも日本語などが含まれる場合には「mb_encode_mimeheader」メソッドを使って文字コードの変換を行う必要があります。

例えば次のように記述します。

$body = <<<EOS
マルチパートメールのテストです。
ヒアドキュメントを使って複数行の文字列を作成しています。
日本語の場合は文字コードの変換が必要です。
EOS;

$body = mb_convert_encoding($body, "ISO-2022-JP", "auto");

$mimeObject = new Mail_Mime("¥n");
$mimeObject -> setTxtBody($body);

メールを構築して本文を取得する

Mail_Mimeクラスのオブジェクトに「setTxtBody」メソッドを使って本文を設定したら、「get」メソッドを使ってメール送信用にメールを構築します。

引数:
  $param  メール構築のパラメータ
戻り値:
  構築されたメール本文

「get」メソッドを実行すると引数で指定したパラメータに従ってメールが構築され、戻り値としてメールの本文が取得できます。ここで取得したメール本文をメールの送信の時に「Mail」クラスのオブジェクトに渡します。

メールを構築する時のパラメータは連想配列の形で指定します。指定できる項目は次の通りです。

キー内容
text_encodingプレインテキストパートに使用するエンコードの種類。デフォルトは「7bit」
html_encodingHTML パートに使用するエンコードの種類
7bit_wrapテキストが終わる文字数です。SMTPはCRLFを含む1000文字を最大行の長さと規定します。デフォルトは998文字です(CRLFを追加して1000文字になります)
head_charsetヘッダに使用する文字コードセット。デフォルトは「ISO-8859-1」
text_charsetプレインテキストパートに使用する文字コードセット。デフォルトは「ISO-8859-1」
html_charsetHTML パートに使用する文字コードセット。デフォルトは「ISO-8859-1」

テキストの本文を使用する場合で本文に日本語が含まれる場合には「text_charset」に「ISO-2022-JP」を指定しておきます。またヘッダーの文字コードも「head_charset」に「ISO-2022-JP」を指定しておきます。

例えば次のように記述します。

$body = <<<EOS
マルチパートメールのテストです。
ヒアドキュメントを使って複数行の文字列を作成しています。
日本語の場合は文字コードの変換が必要です。
EOS;

$body = mb_convert_encoding($body, "ISO-2022-JP", "auto");

$mimeObject = new Mail_Mime("¥n");
$mimeObject -> setTxtBody($body);

$bodyParam = array(
  "head_charset" => "ISO-2022-JP",
  "text_charset" => "ISO-2022-JP"
);

$body = $mimeObject -> get($bodyParam);

これで本文の取得が出来ました。取得した本文はMailクラスのオブジェクトを使ってメールを送信する際に指定します。次のページで今度はヘッダー部分の取得を行います。

( Written by Tatsuo Ikura )