広告

記事検索

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

この記事にはまだコメントがついていません。

Comment Feed Comment feed for this entry

Trackback URI :

コメントをどうぞ

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