cakeEmail を gmail 経由でメールする。
CakePHP2.0には、CakeEmaiという超絶便利なコンポーネントがあるらしい。phpmailerよりも簡単に使えるらしい。
なので、設定と動作確認してみました。
参考サイト
CakeEmail Cookbook v2.x documentation
cakePHP2.1でcakeEmailを使う。
[CakePHP2.0]CakeEmailでテンプレートを使ってメール送信
Config 設定
app/Configフォルダにemail.php.defaultファイルがありますので、defaultを取って利用します。
app/Config/email.php
class EmailConfig { public $default = array( 'transport' => 'Smtp', 'from' => array('*****@gmail.com' => '表示名'), 'host' => 'ssl://smtp.gmail.com', 'port' => 465, 'timeout' => 30, 'username' => '*****@gmail.com', 'password' => '******', 'log' => true//ここをtrueにするとtmp/debug.logにメールのログが書かれる。 //'headerCharset' => 'utf-8', ); }
レイアウト設定
レイアウトは、ベースのレイアウトと、送信内容のレイアウトを2つ作成します。メールの形式はtext用とhtml用が用意出来ますがそうするとそれぞれ2個づつ必要になります。私の場合にはHTMLメールを送信することが殆ど無いのでtextのみ用意します。
View/Layouts/Emails/text/my_layout.ctp
<!--?php echo $content_for_layout; ?--> 会社名:〇〇株式会社 住所:〇〇市〇〇町 メールアドレス:info@example.com URL:http://www.example.com/
View/Emails/text/my_template.ctp
<!--?php echo $name; ?--> 様 <!--?php echo $msg; ?-->
送信指示
送信指示をコントローラーに記述します。
App::uses('CakeEmail', 'Network/Email'); class EmailsController extends AppController { public function index() { $ary_vars = array ( 'name' => '〇〇', 'msg' => 'ありがとうございました。' ); // 受信者設定 $to_mail = '****@example.com';//自分のメールアドレスにしておきましょう。 $to_name = 'お名前'; $subject = '件名'; // 送信処理 $email = new CakeEmail('default'); $email ->template('my_template', 'my_layout') ->viewVars($ary_vars) ->emailFormat('text') ->to(array($to_mail => $to_name)) ->subject($subject) ->send(); $this->redirect($this->referer(), null, true); } }
として、/Emails にアクセスします。しばらくして、自分宛にメールがやって来れば完了です。
コメント
[…] emailの設定をしておきます。以前行った部分のConfig 設定だけやっておけばOKかな。 […]