Posted at

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

More than 1 year has passed since last update.


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