PHPMail
提供:やる気向上作戦
Mail_MimeおよびMailクラスによる日本語メール送信
基本部品
- PEARのMail_Mimeクラス
- PEARのMailクラス
- mbstring拡張モジュール
基本的な流れ
- Mail_mimeクラスのインスタンスを構築。
- setTXTBodyメソッドを使って本文をセット。本文はmb_convert_encoding等を用いてISO-2022-JPに変換しておく。
- 必要なら、addAttachmentを使って添付ファイルを追加。
- getメソッドを使ってメール本文を取得。この際、引数で 'text_charset' => 'ISO-2022-JP' を指定する。
- headersメソッドを使ってメールヘッダを取得。ヘッダに非アスキー文字を含む場合、mb_encode_mimeheader()を用いてエンコードしておく。
- Mail::factory('mail') を呼び出し、Mailクラスのインスタンスを構築。
- sendメソッドを呼び出して送信。
コード
<?php
include('Mail.php');
include('Mail/mime.php');
// ヘッダ配列を作成
$hdrs = array(
'From' => mb_encode_mimeheader('送信者') . ' <example@example.org>',
'Subject' => mb_encode_mimeheader('日本語タイトル'),
);
// Mail_mime::getに与えるパラメータ
$params = array(
'text_charset' => 'iso-2022-jp',
);
// メール本文(テキスト)
$bodytext = mb_convert_encoding('これは日本語の本文', 'ISO-2022-JP');
// Mail_mimeオブジェクトを構築
$crlf = "\r\n";
$mime = new Mail_mime($crlf);
// 本文を設定
$mime->setTXTBody($bodytext);
// 必要ならファイルを添付
$mime->addAttachment('/home/example/file.txt', 'text/plain');
// MIMEエンコード
$encodedbody = $mime->get($params);
$encodedhdrs = $mime->headers($hdrs);
// 送信
$dest = mb_encode_mimeheader('宛先') . ' <destination@example.com>';
$mail =& Mail::factory('mail');
$mail->send($dest, $encodedhdrs, $encodedbody);
?>