sfMail を日本語対応に拡張

日本語のメールを送信する場合。
適宜、文字コードを jis に変換しするように、sfMail を拡張。
クラス jisMail を作る。

class jisMail extends sfMail
{
  public function __construct()
  {
    parent::__construct();
    parent::setCharset('iso-2022-jp');
    parent::setEncoding('7bit');
  }

  public function setSubject($str)
  {
    return parent::setSubject(mb_convert_encoding($str, 'iso-2022-jp', 'UTF-8'));
  }
 
  public function setBody($str)
  {
    return parent::setBody(mb_convert_encoding($str, 'iso-2022-jp', 'UTF-8'));
  }
 
  public function setFrom($address, $name = null)
  {
    if ($name == null)
    {
      if (preg_match('/([^<]*)<([^>]*)>/u', $address, $ms) == 1)
      {
        $name = $ms[1];
        $address = $ms[2];
      }
    }
    parent::setFrom($address, mb_encode_mimeheader(mb_convert_encoding($name,'iso-2022-jp','UTF-8'),'iso-2022-jp','B'));
  }

  public function setSender($address, $name = null)
  {
    if ($name == null)
    {
      if (preg_match('/([^<]*)<([^>]*)>/u', $address, $ms) == 1)
      {
        $name = $ms[1];
        $address = $ms[2];
      }
    }
    parent::setSender($address, mb_encode_mimeheader(mb_convert_encoding($name,'iso-2022-jp','UTF-8'),'iso-2022-jp','B'));
  }
}
setFrom と setSender では、
田中<tanaka@hoge.com>
というフォーマットも解釈してくれるオマケつき。

2012年11月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

アーカイブ