人気記事

広告

記事検索

MOVION.netについて

WEB技術に関することや、気になるWEBサイトなどについて個人的なメモを残すためのブログです。

その他運営サイト

かかわっているサイト

Zend_MailのsetSubjectが僕をいじめる

Zend_MailとSmartyを組み合わせた、メール送信のクラスを作ってみたのですが、
どうも長いタイトルのメールを送ると、タイトルの途中に「?」が入るからソースを見てみたら。

  1.    public function setSubject($subject)
  2.     {
  3.         if ($this->_subject === null) {
  4.             $subject = strtr($subject,"\r\n\t",‘???’);
  5.             $this->_subject = $this->_encodeHeader($subject);
  6.             $this->_storeHeader(‘Subject’, $this->_subject);
  7.         } else {
  8.             throw new Zend_Mail_Exception(‘Subject set twice’);
  9.         }
  10.         return $this;
  11.     }

って、おい。

そりゃ「?」になるよ。
ググったら、ふらっとさんのページやいしなお!さんのページに同じことが書かれてました。

_encodeHeaderメソッドとかを見るとやりたいことはわからないではないが、
いずれにしても日本語(に限らないようだけど)送るときに困っちゃいます。

RFCでいうとこの辺か。

RFC 2822 (Internet Message Format)

RFC 2047 (MIME Part Three:Message Header Extensions for Non-ASCII Text)

とりあえず、RFC 2822の「SHOULD be no more than 78 characters」この辺の、”・・べき”は、
見なかったことにして、かつ長すぎる(符号化後の半角換算998文字)タイトルは考慮しないってことで、
いしなお!さんのとこのように、改行は削除する仕様にしちゃいました。

add to hatena hatena.comment add to del.icio.us add to livedoor.clip add to Yahoo!Bookmark

Comments

  1. Commented by 無名ながら — 2009/02/19 木曜日 @ 14:49:05

    1.7.5で対応されたっぽいです。
    (RFC準拠か不明です)

  2. Commented by あきら — 2009/02/20 金曜日 @ 1:32:06

    情報ありがとうございます。
    記事は確か、1.4.xの時のものです。

Comment Feed Comment feed for this entry

Trackback URI :

コメントをどうぞ

段落や改行は自動挿入です。メールアドレスはサイト上では非表示です。