Qdmailコンポーネントを使って、GmailのSMTPサーバよりメールを送信する
独自にSMTPサーバを用意していない状況下でCakePHPでメール配信プログラムを実装しようと思っています。で、GmailのSMTPサーバを使おうとしたんですが、ハマったのでメモしておきます。
コントローラ
メール送信処理は、複数のコントローラで呼び出す可能性があるので、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 にアクセスして、メールが送信されることを確認します。