PHP
mail
laravel
lumen
PHPMailer

【Lumen(Laravel)】Lumenでメールを送信するのにあえてPHPMailerを使用する

Lumenでメールを送信したい

そもそもLumenはメールを送信するような作りになっていないみたいなので、
ちょっと手間がかかりますがちゃんと手順を踏めばLaravelのごとくメールを送信することができるみたいです。

以下参考するべきページです
Lumenでメールを送る │ M0DE
Lumen、いろいろハマるところ - Qiita
laravel - Lumen 5.3 send email - Stack Overflow

しかしうまくいかないのでPHPMailerを使用する

ググるといろんな記事が出てくるんですが、どの記事通りにしてもうまくいかなかったので、
もうあきらめてPHPMailerを使ってメールを送信することにします。

インストール

Composerからインストール

composer require phpmailer/phpmailer

コード

一応環境変数にメールの設定を書くようにしています。

use PHPMailer\PHPMailer;

// ~~ 略 ~~

    /**
     * メールを送信する
     *
     * @param string $subject メールタイトル
     * @param string $body    メール本文
     * @return void
     */
    public function sendMail(string $subject, string $body)
    {
        $mail = new PHPMailer\PHPMailer();

        $mail->isSMTP(); 
        // $mail->SMTPDebug  = 1;
        $mail->SMTPAuth   = true;
        $mail->Host       = env('MAIL_HOST');       // メインのSMTPサーバーを指定する
        $mail->Port       = env('MAIL_PORT');       // 接続するTCPポート
        $mail->Username   = env('MAIL_USERNAME');   // SMTPユーザー名
        $mail->Password   = env('MAIL_PASSWORD');   // SMTPパスワード
        $mail->SMTPSecure = env('MAIL_ENCRYPTION'); // TLS暗号化


        // メール内容設定
        $mail->CharSet  = "UTF-8";
        $mail->Encoding = "base64";
        //FROM用メールアドレスと宛先名
        $mail->setFrom(env('MAIL_FROM_ADDRESS'), env('MAIL_FROM_NAME'));
        // TO用メールアドレスと宛先名
        $mail->addAddress(env('MAIL_TO_ADDRESS'), env('MAIL_TO_NAME'));
        // CC用メールアドレスと宛先名
        $mail->addCC(env('MAIL_CC_01_ADDRESS'), env('MAIL_CC_01_NAME'));
        $mail->addCC(env('MAIL_CC_02_ADDRESS'), env('MAIL_CC_02_NAME'));
        $mail->Subject = $subject;
        // HTMLフォーマットの有効
        //$mail->isHTML(true);
        $mail->Body = $body;

        if ($mail->send() === false) {
            echo "Mail sending failed!! Mailer Error: {$mail->ErrorInfo}"
        }
    }
env.example
MAIL_HOST=
MAIL_PORT=
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=System@example.com
MAIL_FROM_NAME=System
MAIL_TO_ADDRESS=
MAIL_TO_NAME=
MAIL_CC_01_ADDRESS=
MAIL_CC_01_NAME=
MAIL_CC_02_ADDRESS=
MAIL_CC_02_NAME=

おわり

  • Lumenは削りすぎてややこしや

参考

https://its-office.jp/blog/php/2017/05/28/phpmailer.html
http://blog.takuya-andou.com/entry/2015/12/17/221917