[CakePHP] Qdmail(文字化けしない日本語メール)

Qdmailとは、高機能なPHPの日本語メール送信ライブラリ

  • PHPで、文字化けせずに日本語メールを送ることができる。
  • 簡単にデコメールやHTMLメールなどを送ることができる。
  • CakePHPのコンポーネントとしても動作させることができる。 (主要5フレームワークに対応。CakePHP、Symfony、ZendFrameWork、CodeIgniter、Ethna。)
  • CakePHP1.3.0以上でQdmail バージョン 1.2.6b を使用した場合、エラーが出る。以下のように修正することで解決できる。

CakePHP1.3.0以上で、Qdmail バージョン 1.2.6b を使用した場合のエラーの対処方法
■ qdmail.php 3823行目付近を変更
変更前

$content = $view->renderElement( $this->view_dir . DS . $type . DS . $this->template , array('content' => $content ) , true );

変更後

$content = $view->element( $this->view_dir . DS . $type . DS . $this->template , array('content' => $content ) , true );

Qdmailをダウンロードする方法

  1. Qdmail公式サイトのダウンロード・ページから、推奨されている最新のファイルをダウンロードする。
  2. CakePHPの以下のディレクトリに ダウンロードした「qdmail.php」 ファイルを配置して、アップロードする。
    app/controllers/components/
  3. 使用したいコントローラーで、以下の内容を記述する。
    var $components=array( "Qdmail" );

エレメントを配置する既定のディレクトリ

app/views/elements/email/text/
app/views/elements/email/html/

レイアウトを配置する既定のディレクトリ

app/views/layouts/email/text/
app/views/layouts/email/html/

テキストメールとHTMLメールの指定
CakePHP用に、2つの特別なメソッドが用意されている。
通常のテキスト・メールの場合

$this->Qdmail->cakeText( '本文(テキスト)' );

HTMLメールの場合

$this->Qdmail->cakeHtml( '本文(HTML)' );

ビューを指定する方法
textもhtmlも同じ書式なので、textをもとに説明すると・・・。

$this->Qdmail->cakeText( '本文' ,'エレメント名','レイアウト名');

フルスペックは、こちら。

$this->Qdmail->cakeText( $content , $element  , $layout  , $org_charset , $target_charset, $enc , $wordwrap_length )

以下、上から順番に、第1引数から第7引数までの内容。

  1. 本文
  2. エレメント名
  3. レイアウト名
  4. テンプレートの文字コード(省略可、またはnull)
  5. 送信時の文字コード(省略可、またはnull)
  6. 本文のエンコード形式(7bit,base64等)、
  7. ワードラップの文字数(マルチバイト換算)

コントローラ内の記述例1

$this->Qdmail->to('Toの送信先メールアドレス' , 'Toの送信先メールアドレス(空でもOK)' );
$this->Qdmail->bcc('sample1@sample.com','sample2@sample.com', ・・・);//Bccの送信先メールアドレス
$this->Qdmail->subject('件名');//
$this->Qdmail->from('送信元メールアドレス', '送信元の名前(空でもOK)');
$this->Qdmail->cakeText('text', 'エレメントのファイル名(拡張子なし)', 'レイアウトのファイル名(拡張子なし)');
$this->Qdmail->send();
$this->Qdmail->reset();

コントローラ内の記述例2(フルスペックで指定する場合)

$to_email = 'Toの送信先メールアドレス';
$to_name = 'Toの送信先の名前';
$bcc_emails = join(array($email1, $email2, $email3), ',');//Bccのメールアドレスが変数の場合の記述例
$subject = '件名';
$from_email = '送信元メールアドレス';
$from_name = '送信元の名前';
$content = '本文';//エレメントの中で$content変数として使用可能
$element = 'エレメントのファイル名(拡張子なし)';//レイアウトの中で$content_for_layout変数として使用可能
$layout = 'レイアウトのファイル名(拡張子なし)';
$element_charset = 'エレメントの文字コード';//省略化、または、null
$target_charset = '送信時の文字コード';//省略化、または、null
$body_charset = '本文の文字コード';//7bit, base64等 (例)'iso-2022-jp'
$wordwrap_length = 'ワードラップの文字数';//マルチバイト換算文字

$this->Qdmail->to($to_email , $to_name );
$this->Qdmail->bcc($bcc_emails);
$this->Qdmail->subject($subject);
$this->Qdmail->from($from_email, $from_name);
$this->Qdmail->cakeText($content, $element, $layout, $element_charset, $target_charset, $body_charset, $wordwrap_length);
$this->Qdmail->send();
$this->Qdmail->reset();

参考URL
Qdmail公式サイト
大変お世話になってます。ありがとうございます。

こちらもあわせてどうぞ
  1. [CakePHP] Debugkit(デバッグツール)
  2. [CakePHP] Formヘルパーの拡張
  3. [CakePHP] Textヘルパーの拡張
  4. [CakePHP] 「複数バリデーションの切り替え」と「エラーメッセージの自動生成」ができるビヘイビア
  5. [CakePHP] CMSのページ生成機能にカラーピッカーをつける
  6. [CakePHP] Thumbnailヘルパー(サムネイル画像)
  7. [CakePHP] TinyMCEヘルパー(見たまま編集エディター)
  8. [CakePHP] Benchmarkコンポーネント(パフォーマンスの計測)
HatenaGoogle BookmarksYahoo BookmarksFacebook

コメントする

*