LoginSignup
5
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-08-06

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

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2