Qdmailコンポーネントを使って、GmailのSMTPサーバよりメールを送信する

独自にSMTPサーバを用意していない状況下でCakePHPでメール配信プログラムを実装しようと思っています。で、GmailSMTPサーバを使おうとしたんですが、ハマったのでメモしておきます。

コントローラ

メール送信処理は、複数のコントローラで呼び出す可能性があるので、AppControllerクラスにメール用のパラメータを設定しておきます。

app/app_controller.php
<?php
class AppController extends Controller {
	// (中略)
	var $mail_param = array(
			'host'     => 'ssl://smtp.gmail.com', // メールサーバー
			'port'     => 465 , // SMTP over SSL
			'from'     => '*******@gmail.com',  // Return-path: 
			'protocol' => 'SMTP_AUTH', 
			'user'     => '*******@gmail.com', // Gmailのメールアドレス
			'pass'     => '********', // Googleのアカウントのパスワード
	);
}

上記の設定では、以下の2点に注意します。

app/controllers/mail_controller.php
<?php
class ExamplesController extends AppController {
	// (中略)
	var $components = array('Qdmail');	
	function send() {
		$this->Qdmail->smtp(true);
		$this->Qdmail->smtpServer($this->mail_param);
		$this->Qdmail->to('somebody@example.com', 'サンプル太郎さん');
		$this->Qdmail->subject('Qdmail on CakePHP メールサンプル');
		$this->Qdmail->from('*******@gmail.com', 'サンプルメール配信');
		$text = 'こんにちは!メール配信テストです。';
		$this->Qdmail->text($text);
		$this->Qdmail->send();
	}
}

動作確認

http://localhost/examples/send にアクセスして、メールが送信されることを確認します。