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入門】メールを送信する方法 | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト