Dream of Electric Sheep

WEBやプログラムの忘備録

gmail を使用して CakeEmail でメール送信する

CakeEmailについて調べていて、やっと送信できたのでメモしておきます。

CakePHP のバージョンは 2.5.8.、メール送信に gmail を使用します。

●準備 gmailアカウントの用意
こちらの[アカウントを作成]よりアカウントを作成します。
gmailSMTPを使用してメール送信をするのですが、セキュリティの問題でCakeEmailからのアクセスを拒否してしまうようなので、gamil側の設定を変える必要があります。

安全性の低いアプリがアカウントにアクセスするのを許可する - Google アカウント ヘルプ
の[安全性の低いアプリを許可] というリンクより設定ページへ移動し、安全性の低いアプリのアクセス の「オン」にチェックを入れます。この操作をする際、googleのアカウントにログインしておく必要があります。

 

●email.php の設定
[CakePHP_ROOT]\app\Config にある email.php.default をコピペし、email.php にリネームします。email.php 中の $default を以下のように編集します。

    public $default = array(
        'host' => 'ssl://smtp.gmail.com',
        'port' => 465,
        'username' => 'address@gmail.com',
        'password' => 'password',
        'transport' => 'Smtp',
    );

username と password には使用するgmailアカウントのユーザーとパスワードを記述してください。

 

●コントローラーの記述
コントローラーのアクションメソッド中に以下のように記述します。

$email = new CakeEmail('default');
$massages = $email->
            ->from(array('[from用アドレス]' => '[アドレスの別名]'))
            ->to('[送付先のアドレス]')
            ->subject('[メールのタイトル]')
            ->send(`[メールの本文]`);

以上で、メール送信できます。
CakeEmail を new するときに渡す引数は email.php 中に記述した設定のどれを使うかの指定で、$default を使う場合は 'default' を渡します。email.php 中の設定は任意に名前を付けることができ、例えば $gmail で設定を記述した場合には 'gmail' を渡すことでその設定を使うことができます。

 

はまったところ

解決してしまえばしょうもないことなんですが、CakeEmailでググった時に出てきた情報で、email.php に関する記述部分に

        'username' => 'address@gmail.com', // ユーザ名
        'password' => 'password',                   // パスワード

のようにコメントが入っているのをそのままコピペしてたら動きませんでした。