cakePHPで日本語メール送信
haseken
haseken
ATOMRSS
  • codeなにがしブックマークに追加する 0 users
  • このページを del.icio.us に追加
  • このページをはてなブックマークに追加
  • GoodJob
  • 26

GJGJ

GJGJGJGJGJGJ

説明

cakePHPで1.2から増えたEmailComponentsなのですが、
送信処理にmail()関数を使っているので、
普通に使うと日本語が文字化けしてしまいます。

なので、http://code.nanigac.com/source/view/101
を参考にマルチバイト対応にしてみました。
変更点は2箇所、プロパティの追加とメソッドの上書きのみです。
コードが600行を超えているので、変更点のみ記載します。

使用する時は、コントローラに

    var $components array('Email'); 

を追加し、送る時に

    $this->Email->language 'Japanese';
    $this->Email->encoding 'UTF-8';
    $this->Email->_lineLength 200; // デフォルトは70文字
    $this->Email->to 'xxx@example.com';
    $this->Email->subject '件名';
    $this->Email->replyTo 'noreply@example.com';
    $this->Email->from 'test account<noreply@example.com>';
    $msg 'テストメール';
    $this->Email->send($msg);

のように、languageとencodingを設定してやります。

元ファイルのemail.phpは
  http://cakephp.org/downloads/index/nightly
の1.2xxxからダウンロードし、解凍した中の
  /cake/libs/controller/components/email.php
です。

mb_send_mailを使っているので「互換性を高く」
と言うcakePHPの思想とは、ずれるかも知れませんが
日本語が使えないと困るので^^;

ソースコード

コメント

if (ini_get('safe_mode')) {
    $result @mb_send_mail($this->to, $this->subject, $this->__message, $this->__header);
}
$result @mb_send_mail($this->to, $this->subject, $this->__message, $this->__header, $this->additionalParams);



if (ini_get('safe_mode')) {
    $result @mb_send_mail($this->to, $this->subject, $this->__message, $this->__header);
else {
    $result @mb_send_mail($this->to, $this->subject, $this->__message, $this->__header, $this->additionalParams);
}

としないといけませんね。

GJGJGJGJGJGJ

確かにその通りです。
その部分は元のemailコンポーネントでreturnで実装されていて、成否を$resultで判定するよう変更したときに見落としていました。
ご指摘ありがとうございます。
修正しておきます。

GJGJGJGJ

  • ゲスト
  • 3:ゲスト
  • 2007/12/28 10:09

この書き方でメールを作るとヘッダが以下のようにおかしくなりませんか?
(例:UTF-8エンコード指定した場合)
-----------
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
-----------

あと、Fromに日本語が入った場合の文字化け対応も・・・。
ひょっとして私だけでしょうか?

GJGJGJGJGJGJ

前へ 1 次へ

プレゼン公開・共有サイト handsOut.jp チーム・マイナス6% - みんなで止めよう温暖化

ソースコードのブログパーツ

デフォルトのフォントサイズ
修飾
表示サイズ
px px
プレビュー (表示する)
下のプレビュー領域をクリックすると、ポップアップで全体を見ることができます。
パラメータが不正です

    GoodJobしたユーザ

    • mono
    • kuropon
    • tbk
    • ritz
    • pola
    • ayasuke
    • ppgg
    • 100k85

    ブックマークコメント

    関連するなにがし

    前へ 1 次へ

    タグ

    raketime machineイベントログfilesystemobjectdeveloperprogrammingprimenumberflexriatagged電卓分数逆ポーランド記法ポーランド記法jaxbdyndnsarraylistdeepcopyディープコピーobjectoutputstreambytearrayoutputstreamobjectinputstreambytearrayinputstreamiterator複数チェックボックスmultibytexencentos文字エンコーディングinit_connectcharacter-set-servercollation-serverdefault-character-setヘルパーメソッド動的メソッド呼び出しf:labelwsse2重登録防止prototype.js位置positionedoffsetscrolltoスクロールpositionlink_tocyclecheck_box_tagチュートリアルactive_formerror_messages_forハイライトバリデーションvalidate便利リストデコレーションメールデコメ非対応機種tilestext_field_tag一括複数情報etherealrtphexテキストデータ抽出validwhenリセット一括更新plop置換replacepcoslogmixisregソケットnet::telnetfopenmutexサンプルcalendar[linux][bash][シェルスクリプト][大容量]mobilerorrails2.1クリップボードclipboard横向きピラミッドs2jdbc-genjsonicお絵かきフルパス名抽出サブドメインサブドメイン名s2jdbc自動生成エンティティxhtml

    前へ 1 2 3 ... 8 次へ