CakePhp3では、メールサーバがあれば割と簡単にメールを送ることができる。
手軽に利用できるメールサービスといえば、Gmail。
今回はGmailのSMTPサーバを使って、CakePhp3からメールを送るための設定について。
#アカウントを取得する
まずはGmailのメールアドレス(アカウント)を取得する。
普通にアカウントを作ればいい。
既にアカウントを持っている場合でも、セキュリティの設定などを行っていると、
上手く認証できない可能性が高いのでできるだけ新しいアカウントを作ったほうがいいと思う。
#メール送信設定
CakePhp3のconfig/app.php
にメールの送信に関する設定を書いておく。
EmailTransportという部分があるので、そこを設定する。
'EmailTransport' => [
'default' => [
'className' => 'Smtp',
// The following keys are used in SMTP transports
'host' => 'ssl://smtp.gmail.com',
'port' => 465,
'timeout' => 30,
'username' => 'gmailのメールアドレス',
'password' => 'gmailのパスワード',
'transport' => 'Smtp',
'client' => null,
'tls' => null,
'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
],
],
#メールを送信する
メールを送信するときは、Emailクラスを使う。
とりあえず、一番上でuse宣言をして、処理の中でEmaliクラスを使って、メールの処理を書く。
use Cake\Mailer\Email;
…
public function send(){
$email = new Email('default');
$email->from(['送り元アドレス' => '名前'])
->to('送り先アドレス')
->subject('タイトル')
->send('本文');
}
この処理を実行すると、'送り元アドレス'から'送り先アドレス'へメールが送信される。
to
のほかにもcc
やbcc
といったメソッドも存在する。
複数のアドレスに送るときは配列で指定するか、addTo
(addCc
、addBcc
)メソッドで追加していけばいい。
(to
、cc
、bcc
を何度も書くと上書きされる)