• []
  • []
  •  
  • del.icio.us 
  •  
  • Yahoo!֥åޡϿ 

PEAR :: Mail_Mime Mime変換、マルチパートメール作成

PHP 求人 募集 Symfony CakePHP Smarty Ruby on Rails

PEAR :: Mail_Mime

概要

添付ファイル付きメールや、 HTMLメール作成も大変便利。

日本語文字化け? 日本語対応版? 別にそんなコトしなくても文字化けしませんよ。

(ノ・・)ン。。。。。。(((●コロコロッ

mime変換,mime分解を一手に担うのがこのPEAR :: Mail_Mime Mime変換、マルチパートメール作成です。

HTMLメールでやっかいなのが、 画像のBase64変換とHTMLのcid変換。 そのあたりもさっくりやってくれるので楽。

PEAR :: Mail_Mime Mime変換、マルチパートメール作成のインストールはこんな具合。 # pear install Mail_Mime

サンプル

ソースはこんな感じかな。

    <?php
    require_once('Mail.php');
    require_once('Mail/mime.php');
 
    $subject = "HTMLメールですよー。結構長めに設定してmime変換されているかチェック。";  // 題名
    $text    = "e-mailのテストだよ";  // テキスト本文
    $html = <<<HTML
    <html>
    <HEAD>
    <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=EUC-JP">
    </HEAD>
    <body>
    e-<font color="red">mail</font>のテストだよ<br />
    <img src="my_baby.gif" />
    </body>
    </html>
    HTML;
 
    // EUC-JP => JIS
    $original = mb_internal_encoding();
    $subject = mb_convert_encoding( $subject, "ISO-2022-JP", "EUC-JP" );
    mb_internal_encoding( "ISO-2022-JP" );
    $subject = mb_encode_mimeheader( $subject, "ISO-2022-JP" );
    mb_internal_encoding( $original );
 
    $text = mb_convert_encoding( $text, "ISO-2022-JP", "EUC-JP" );
 
    $file = './secret_file.xls'; // application/octet-stream
    $img  = './my_baby.gif'; // image/gif
    $crlf = "\n"; // 現在の改行コード
 
    // ヘッダー情報
    $hdrs = array(
                  'From'    => 'dozo@matrix.jp',
                  'Sender'    => 'dozo@rgr.jp',
                  'Subject' => $subject,
                  );
    // インスタンス生成
    $mime = & new Mail_mime($crlf);
 
    $mime->setTXTBody($text); // 
    $mime->setHTMLBody($html);
    $mime->addAttachment($file);
    $mime->addHTMLImage($img, 'image/gif');
 
    // 出力用パラメータ
    $build_param = array(
        "html_charset" => "EUC-JP",
        "text_charset" => "ISO-2022-JP",
        "head_charset" => "ISO-2022-JP",
    );
 
    $body = $mime->get( $build_param );
    $hdrs = $mime->headers($hdrs);
 
    $mail =& Mail::factory('mail');
    $mail->send('dozo@rgr.jp', $hdrs, $body);
    ?>

ハマリどころ。

getメソッドとheadersメソッドの順番を入れ替えると送信されなくなる。

要望を書いてみたり。

出力用パラメータはもっと前に設定したいなぁ。

コメント

-subject文字数多いと文字化けしました。$subject = mb_convert_encoding( $subject, “ISO-2022-JP”, “EUC-JP” );を$subject = mb_convert_encoding( $subject, “EUC-JP” );にしたら解決。 – tetsuo {2006-05-05 17:13:15 (金)};
-mb_encode_mimeheaderを使うのが標準になれば良いんですけどね。なんかちゃんと動かないんですよねぇ。。 – dozo {2006-05-06 11:02:46 (土)};


pear/mail/mime.txt · 最終更新: 2007/06/11 12:20 by dozo