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をダウンロードする方法
- Qdmail公式サイトのダウンロード・ページから、推奨されている最新のファイルをダウンロードする。
- CakePHPの以下のディレクトリに ダウンロードした「qdmail.php」 ファイルを配置して、アップロードする。
app/controllers/components/
- 使用したいコントローラーで、以下の内容を記述する。
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引数までの内容。
- 本文
- エレメント名
- レイアウト名
- テンプレートの文字コード(省略可、またはnull)
- 送信時の文字コード(省略可、またはnull)
- 本文のエンコード形式(7bit,base64等)、
- ワードラップの文字数(マルチバイト換算)
コントローラ内の記述例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公式サイト
大変お世話になってます。ありがとうございます。