CakePHP3(3.0.0-beta1)でコメントが書き込まれたらメール送信されるようにしてみる
ぼんやりしている間にCakePHP 3.0.0-beta1がリリースされていました。
ブログチュートリアルにコメント機能を追加したので、コメントが書き込まれたらメール送信されるようにしてみます。
①ArticlesControllerを下記のように変更。
・ライブラリの読み込み
use Cake\Network\Email\Email;
・comment()にメール送信処理追加
public function comment() { $this->loadModel('Comments'); $comment = $this->Comments->newEntity($this->request->data); if ($this->request->is('post')) { if ($this->Comments->save($comment)) { $email = new Email('dev'); $email->to('送信先のメールアドレス') ->subject($this->request->data['title']) ->send($this->request->data['body']); $this->Flash->success(__('Your comment has been saved.')); //return $this->redirect(['action' => 'index']); }else{ $this->Flash->error(__('Unable to add your comment.')); } } return $this->redirect('/articles/view/'.$this->request->data['article_id']); }
②config/app.phpを下記のように変更(devを追加)
'EmailTransport' => [ 'default' => [ 'className' => 'Mail', // The following keys are used in SMTP transports 'host' => 'localhost', 'port' => 25, 'timeout' => 30, 'username' => 'user', 'password' => 'secret', 'client' => null, 'tls' => null, ], 'dev' => [ 'className' => 'Smtp', // The following keys are used in SMTP transports 'host' => 'localhost', 'port' => 25, 'timeout' => 30, 'client' => null, 'tls' => null, ], ], 'Email' => [ 'default' => [ 'transport' => 'default', 'from' => 'you@localhost', //'charset' => 'utf-8', //'headerCharset' => 'utf-8', ], 'dev' => [ 'transport' => 'dev', 'from' => ['差出人のメールアドレス'=>'差出人名'], //'charset' => 'utf-8', //'headerCharset' => 'utf-8', ], ],
差出人情報は送信時に都度指定することも可能。