Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
18
Help us understand the problem. What is going on with this article?

More than 5 years have passed since last update.

@frost_star

CakePhp3でGmailからメールを送る

CakePhp3では、メールサーバがあれば割と簡単にメールを送ることができる。
手軽に利用できるメールサービスといえば、Gmail。
今回はGmailのSMTPサーバを使って、CakePhp3からメールを送るための設定について。

アカウントを取得する

まずはGmailのメールアドレス(アカウント)を取得する。
普通にアカウントを作ればいい。
既にアカウントを持っている場合でも、セキュリティの設定などを行っていると、
上手く認証できない可能性が高いのでできるだけ新しいアカウントを作ったほうがいいと思う。

メール送信設定

CakePhp3のconfig/app.phpにメールの送信に関する設定を書いておく。
EmailTransportという部分があるので、そこを設定する。

config.php
    '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のほかにもccbccといったメソッドも存在する。
複数のアドレスに送るときは配列で指定するか、addTo(addCcaddBcc)メソッドで追加していけばいい。
(toccbccを何度も書くと上書きされる)

18
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
18
Help us understand the problem. What is going on with this article?