ZendFrameworkではメール送信のコンポーネントもあります。


require_once 'Zend/Mail.php';
$mail = new Zend_Mail('ISO-2022-JP');
$mail->setFrom('test@testtttttttt.com', 'テスト');
$mail->addTo('send@testtttttttt.com', '受信者');
$mail->setSubject('テストで送る');
$mail->setBodyText('テストテスト');
$mail->send();



これで送信したメールをOutlookで受信すると差出人が化けます。


というか、エンコードデータがそのままデコードされずに表示されます。


これの原因がサンプルの最初に読み込んでいるMail.phpにあります。


setFromメソッド内の_storeHeaderを呼び出してる箇所を下記のように修正します。



/*
$this->_storeHeader(
    'From'
    , $this->_encodeHeader('"'.$name.'"').' <' . $email . '>'
    , true);
*/
$this->_storeHeader(
    'From'
    , '"' . $this->_encodeHeader($name).'"<'.$email.'>'
    , true);


最近ZendFrameworkを基本から始めようと思い入門書を購入


買ったのは↓

PHPフレームワーク Zend Framework入門/藤野 真吾
¥2,919
Amazon.co.jp



感想と致しましては、PHPでのMVCを経験が無い方には、簡単に書かれていてわかり易いかと思います。


ある程度MVC等は理解していたり、他のフレームワークからの乗り換えであるのならWEB上の情報で事が足りるのかと思います。


で、この本にも今回のメール送信のバグについては記載されてました。


最初から買っておけば・・・。w