【CakePHP】CakePHP2系でQdmailを使用する方法

images

2012年07月07日(土)

  CakePHP1.3系で以前メール送信処理を 実装した際に使用していたQdmailなんですが、 なんとCakePHP2系では通常使用方法では動作しなくなっていました。 なので無理やりですが、実装してみたら、 結構できたので記述します。 これは結構みんな欲しいのではないか!?     まずはQdmailを導入する手順通り、 ControllerのComponentへQdmailのファイルを設置します。 以下のようになると思います。  
Controller -Component +Qdmail.php +Qdsmtp.php
ただ、CakePHP2系ではこの名前では使用できないので、 以下にリネームします。  
Controller -Component +QdmailComponent.php +QdsmtpComponent.php
で、Controller側での呼び出しからは以下ですよね?  
public $components = array(‘Qdmail’, ‘Qdsmtp’);
  こちらで読み込みができます。 しかし、2系では読み込み先等が色々違うので、  
・QdmailComponent.php ・QdsmtpComponent.php
  の2つのファイルに修正が必要になってきます。       まず、QdmailComponent.phpの方では、  
class QdmailComponent extends QdmailUserFunc{

var $framework = 'CakePHP';
// var $view_dir = 'email'; 削除
// var $layout_dir = 'email'; 削除
var $layout = 'default';
var $template = 'default';
// var $view = null; 削除

var $view_dir = 'Emails'; //追加
var $layout_dir = 'Emails'; //追加
var $view = 'View'; //追加

function initialize(){} //追加
function beforeRender(){} //追加
function shutdown(){} //追加
   
function QdmailComponent( $param = null ){
$param = null; //追加
/* 削除
if( !is_null($param)){
$param = func_get_args();
}
*/ //削除
parent::__construct( $param );
}
  QdmailComponentの箇所を上記のように修正してみました。 たぶん見れば大体何やっているか理解できると思います。     で、QdsmtpComponent.phpの方も修正が必要です。  
class QdsmtpComponent extends QdsmtpBase{

var $layout = 'default';
// var $view_dir = 'email'; //削除
// var $layout_dir = 'email'; //削除
var $template = 'default';
// var $view = null; //削除

var $view_dir = 'Emails'; //追加
var $layout_dir = 'Emails'; //追加
var $view = 'View'; //追加

function initialize(){} //追加
function beforeRender(){} //追加
function shutdown(){} //追加
  このようにこちらも修正します。 これでOKです!! 僕の場合はこれで使えるようになりました!     参考までに、 一応使用方法を記載しときます。  
$admin_email = 'sample@sample.com';	//管理者のメールアドレス
$admin_name = 'sample';			//管理者の名前

$mail_param = array(			//SMTPの設定
'host' => 'smtp.sample.com',		//ホスト名
'port' => 587,				//ポート
'from' => 'sample@sample.com',		//Return-path
'protocol' => 'SMTP_AUTH',		//認証方式
'user' => 'sample@sample.com',		//SMTPサーバーのユーザーID
'pass' => '*******'			//SMTPサーバーの認証パスワード
);

$this->Qdmail->reset();			//リセット
$this->Qdmail->allwaysBcc($admin_email);//常にBcc設定で管理者に送信

$this->Qdmail->smtp(true);		//SMTP設定
$this->Qdmail->smtpServer($mail_param);

$this->Qdmail->to('to-sample@to.com');	//送信先
$this->Qdmail->subject('件名');		//件名
$this->Qdmail->from($admin_email, $admin_name);//送信元
$this->Qdmail->text('本文');  		//本文
$this->Qdmail->send();  		//メールを送信
  こんな感じですよね? 参考までにどうぞ! たぶんできると思います!!   参考になれば幸いです。   では!!     で、最後に、 実は…   以下参考になります! ありがとうございました!   □QdmailをCakePHP2.xで使う方法 http://tech.spark-lab.com/2012/03/22/qdmail%E3%82%92cakephp2-x%E3%81%A7%E4%BD%BF%E3%81%86%E6%96%B9%E6%B3%95/    

スポンサードリンク

運営サービスPR

スポンサードリンク

運営サービスPR