Qdsmtpを使ってGmailを送信する
Web上で問い合わせフォームを実装する場合、CakePHPならばQdmailを使う人が多いと思います。
ただ、Qdmailってphp.iniのSMTPの値を使用するんですよね。なので、QdmailをラップするQdsmtpを使ってみようと思ったのですが、GmailをSMTPサーバーに設定する際にちょっとハマりました。以下Qdsmtpの導入手順です。
1.Qdmail・Qdsmtpを取得
2009/03/10現在、Qdmailの最新バージョンは1.2.6b、Qdsmtpの最新バージョンは0.2.0aみたいです。
http://hal456.net/qdmail/
http://hal456.net/qdsmtp/
3.controllerで呼ぶ
使用するcontrollerで以下のように記述して下さい。というか、ほぼQdsmtpのサイトにある通りです(すげー)。
<?php class QuestionsController extends AppController { var $name = 'Questions'; var $helpers = array('Html', 'Form'); // QdmailがQdsmtpを探すので、Qdsmtpを指定する必要はない var $components = array('Qdmail'); function send() { // SMTPの設定値 $param = array( 'host'=>'ssl://smtp.gmail.com', 'port'=>'465', 'from'=>'address@gmail.com', 'user'=>'address@gmail.com', 'pass' => 'password', 'protocol'=>'SMTP_AUTH', ); $this->Qdmail->to('to_address@example.com'); $this->Qdmail->subject('テスト'); $this->Qdmail->from('address@gmail.com'); // Qdsmtpを使用する場合は記述 $this->Qdmail->smtp(true); $this->Qdmail->smtpServer($param); $this->Qdmail -> cakeHtml('本文'); $this->Qdmail->send(); } } ?>
ここで注意するのが、$paramのhostにssl://smtp.gmail.comもしくはtls://smtp.gmail.comと記述することです。GmailはSMTPサーバーにSSL/TLSを使用する必要があるので、それを指定しなければいけません。またuserは@gmail.comを含めて記述してください。
http://mail.google.com/support/bin/answer.py?hl=jp&answer=44793