PHPMail

提供:やる気向上作戦
移動: 案内, 検索

PHP


Mail_MimeおよびMailクラスによる日本語メール送信

基本部品

  • PEARのMail_Mimeクラス
  • PEARのMailクラス
  • mbstring拡張モジュール


基本的な流れ

  1. Mail_mimeクラスのインスタンスを構築。
  2. setTXTBodyメソッドを使って本文をセット。本文はmb_convert_encoding等を用いてISO-2022-JPに変換しておく。
  3. 必要なら、addAttachmentを使って添付ファイルを追加。
  4. getメソッドを使ってメール本文を取得。この際、引数で 'text_charset' => 'ISO-2022-JP' を指定する。
  5. headersメソッドを使ってメールヘッダを取得。ヘッダに非アスキー文字を含む場合、mb_encode_mimeheader()を用いてエンコードしておく。
  6. Mail::factory('mail') を呼び出し、Mailクラスのインスタンスを構築。
  7. 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);
 
?>
個人用ツール