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