CakePHP3でメールを送信する
開発環境は、Windows 7 Professional(32bit)+XAMPP v3.22+CakePHP 3.5.8。
ロリポップのレンタルサーバーから、Gmailへメールを飛ばしてみる。
1.ユーザー専用ページへアクセスする
2.左サイドバーのメールからメール設定/ロリポップ!webメーラーを選択する
3.新規作成ボタンをクリックする
メールアドレスとパスワードを入力し、作成ボタンをクリックする。
もう1回作成ボタンをクリックし、アラートのOKボタンをクリックする。
4.先ほど作ったメールのメール設定の欄の確認・変更をクリックする。
config/app.php内のEmailTransportのdefaultの後に以下のものを追加する。
<?php 'default' => [ ], 'lolipop' => [ 'className' => 'Mail', 'host' => 'ロリポップで取得したドメイン名', 'username' => '作ったメールアドレス', 'password' => '作ったパスワード', 'port' => 465, 'transport' => 'Smtp', 'tls' => true, 'timeout' => 50 ], ?>
classNameをSmtpに設定すると、タイムアウトして送信できないので、Mailにすると、送信できました。
試しに、UsersController.phpにmailアクションを作成する。
<?php // ページの先頭のuseがある部分に設置 use Cake\Mailer\Email; public function mail(){ if($this->request->is('post')){ $emailObj = new Email('default'); $emailObj->transport('lolipop') ->setFrom(['自分のメールアドレス' => '太郎']) ->setTo('送信先のメールアドレス') ->setSubject('タイトルです') ->send('こんにちはです。'); } } ?>
Template/Users内にmail.ctpという名前で以下のコードを保存する。
<?php <form method="post" action="/users/mail"> <input type="submit" value="メール送信"> </form> ?>
これで、メール送信ボタンをクリックするたびに、自分のGmailへメールが送られます。
参考リンク
【CakePHP入門】メールを送信する方法 | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト