PHPMailerでSMTPメール送信
2023-12-17 記載
概要 : sendmailでは返信不可のメールになるので、自分のアカウントからメール送信する。Keyword : PHPMailer, sendmail, PHP, SMTP,
Gmailを例に、Gmailのアカウントを用いてメール送信する設定をしてみます。
Gmailは認証方法として、OAuth2.0と2段階認証のふたつがあります。2段階認証のほうがシンプルですのでまずはそちらを。
Gメールのアカウントはすでに持っているものとします。
myaccount@gmail.com
と説明上はします。
https://mail.google.com/mail
でGmailの画面を出し、
歯車→すべての設定を表示→アカウントとインポート→アカウント設定を変更:
[その他の Google アカウントの設定]
https://myaccount.google.com/u/0/?hl=ja
セキュリティ→2段階認証プロセス
で本人確認ののち、
[2 段階認証プロセスを有効にしますか?]→有効にする
ふたたび
セキュリティ→2段階認証プロセス
から入り、最下段の[アプリ パスワード]
アプリ パスワード なし →
App nameの 入力
(ここは複数のアプリパスワードを設定した場合の識別名で、この値を送信設定で用いることはない。つまり何用か自分がわかればよい。)
for PHPMailer on cloudfree
とかを入れますと、ダイアログでパスワードが表示されます。
4桁の4ブロックで16文字。これが重要です。
aaaa bbbb cccc dddd
メールアドレスとスペースを省いた16文字がログイン情報になります。
username : myaccount@gmail.com
password : aaaabbbbccccdddd
つぎにComposerでPHPMailerをセットアップ
例として htdocs\maillib にします。
C:\pgm\Apache24\htdocs\maillib>composer require phpmailer/phpmailer
Using version ^6.9 for phpmailer/phpmailer
./composer.json has been created
Running composer update phpmailer/phpmailer
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
- Locking phpmailer/phpmailer (v6.9.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing phpmailer/phpmailer (v6.9.1): Extracting archive
7 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
1 package you are using is looking for funding.
Use the `composer fund` command to find out more!
ではphpから送ってみることにします。
myaccount@gmail.com が送信元。
dummymail@gmail.com を送付先とします。
htdocs\maillib\sendmail_gmail.phpをコードを書くファイルとします。
<?php
require_once 'vendor/autoload.php';
require_once 'vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer(true);
//$mail->SMTPDebug = 2; //デバッグ用 2
$mail->setLanguage('ja', 'vendor/phpmailer/phpmailer/language/');
$mail->CharSet = "utf-8";
$mail->Encoding = "base64";
//認証設定
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->Username = 'myaccount@gmail.com'; // Googleログインユーザ名
$mail->Password = 'aaaabbbbccccdddd'; // Googleアプリパスワード
//差出人
$mail->setFrom('myaccount@gmail.com');
//宛先
$mail->addAddress('dummymail@gmail.com');
//件名
$mail->Subject = 'PHPMailerから送ります';
//本文
$mail->Body = "春はあけぼの。\nやうやう白くなりゆく山ぎは\nすこしあかりて";
//メール送信
try {
$mail->send();
echo '届きましたか?';
} catch (Exception $e) {
echo '失敗: ', $mail->ErrorInfo.PHP_EOL;
}
サーバはもちろん、ローカル環境からでも送信できますので、メールアカウントを正しいものに書き換えれば
https://localhost/maillib/sendmail_gmail.php
で実際に送信されるでしょう。
届かない場合は
$mail->SMTPDebug = 2; //デバッグ用 2
のコメントを外して原因を探ります。