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

symfony JIS(ISO-2022-JP)メール送信する方法(MVCバージョン)

PHP 求人 募集 Symfony CakePHP Smarty Ruby on Rails

FIXME
検証の甘いところをご指摘頂きました。ありがとうございます。
http://d.hatena.ne.jp/brtRiver/20071002/1191346097
併せてご覧ください

symfony JIS(ISO-2022-JP)メール送信する方法(MVCバージョン) 概要

日本語というのは何ともやっかいで、
日本の技術者の悩みの種ではTOP3に入るでしょう。
海外発のソフトウェアを利用するとどんなに多言語対応されたソフトでも文字化けが起こるモノがあります。 それは メール

日本のメールは昔からJISでやりとりされていました。
(理由はよく知りません)
なので比較的古いメールクライアントでは
JISにしか対応していないソフトウェアが存在します。

最近ではUnicode対応がキチンと行われてきているので、
Unicodeですべて作っておけば文字化け等からの悩みは解消されます。
また、メールクライアントもUnicodeに対応していることが多いので
コミュニティなど比較的最近のバージョンでOKなアプリケーションでは、
UTF8でメールをそのまま送る方法で問題はないと思います。

しかし、ECなど比較的古いバージョンもカバーしなければならない場合や、
ケータイ対応サイトを構築した時にはどうしてもJISで送信しなければなりません。
ケータイの場合はSoftbankはUTF8なので
端末によって出力を変えたりなど柔軟な対応が必要です。

そこで、今回はUTF8、JISの両方で取り扱えるようにする方法を考えてみましょう。

symfony JIS(ISO-2022-JP)メール送信する方法(MVCバージョン) 詳細

検索してみるといくつかトライした内容を公開している方がいます。
http://www.symfony-project.com/snippets/snippet/148
http://php-sql-gdgd.jugem.jp/?eid=27
http://unos.biz/blog/archives/34
苦労されている印象です。

symfonyはMVCフレームワークなので、
折角なのでメールのテンプレートはビューに
ロジックはコントローラになるようにしてみることにします。

メール用のアクションとビューを作る

アクション

  public function executeSendmail()
  {
  }

ビュー

日本語メールのテスト

メール送信に関する設定ファイル設置

view.yml

sendmailSuccess:
  has_layout: false

mailer.yml

default:
  charset:         iso-2022-jp
  encoding:        7bit

これで準備は完了です。

メール送信ロジック

ロジック部分を以下のようにします。
メールを送信したいアクションに追加してください。
メール用のモジュール名をmoduleとすると

$mail = new sfMail();
$mailbody = $this->getPresentationFor("module", "sendmail");
$mail->addAddress("dozo@matrix.jp" );
$mail->setSubject( mb_convert_encoding('日本語JISメール', 'iso-2022-jp', "UTF-8" ) );
$mail->setBody( mb_convert_encoding( $mailbody, 'iso-2022-jp', "UTF-8" ) );
$mail->send();

synfony JIS(ISO-2022-JP)メール送信する方法(MVCバージョン) 解説

ポイントはアクションからアクションを呼び出すgetPresentationForメソッド
sendEmailメソッドでも二次的に呼び出されています。
戻り値はアクションとビューを併せて出力した内容です。

これに設定ファイルのhas_layout: falseでHTMLレイアウトから遮断しプレーンテキストとして処理します。
mailer.ymlの内容はsfMailのメソッドでも設定可能です。

これらはsfMailクラスを拡張しても実装できそうです。
実際に試したら内容を追加します。


framework/symfony/jisメール.txt · 最終更新: 2007/10/25 22:16 by dozo