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

GJ

GJGJGJGJGJGJGJGJGJ

説明

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);
}

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

GJ

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

  • GoodJob
  • 0

  • ゲスト
  • 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に日本語が入った場合の文字化け対応も・・・。
ひょっとして私だけでしょうか?

  • GoodJob
  • 0

前へ 1 次へ

コメントする

[block]から[/block]までの範囲はブロック表示されます。
部分的に目立たせたい時や、引用などにお使いください。

[code]から[/code]までの範囲は等幅表示されます。
ソースコードや設定ファイルの記述などにお使いください。

ゲスト投稿者:ゲスト:

PDFLib | A library for processing PDF on the fly プレゼン公開・共有サイト handsOut.jp オープンタイプ株式会社 チーム・マイナス6% - みんなで止めよう温暖化

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

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

    GoodJobしたユーザ

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

    ブックマークコメント

    関連するなにがし

    前へ 1 次へ