Google で検索すれば、実例コードがたくさん出てくるかと思います。
今回、私が使っている Windows10 内の PHP-7.3 (Xampp)では送信が成功せず
しばらく解決に時間が掛かりました。
以前にも同様の事例で悩んだことはあるんですが、解決した方法を忘れてしまい
余計な時間を浪費してしまいました。
同様の事例に困っている方の手助けになれれば幸いです。
解決方法は、他にもあるかもしれませんが
私が解決した方法を紹介します。
「SSLサーバー証明書の検証」をさせないように設定を追加することで解決しました。
SMTPOptions を設定する必要がありました。
PHPMailer での文字コードは、全て "UTF-8" にしています。
PHPMailer の バージョン 6.1 からは、JISコードで変換して送信すると文字化けが発生します。
解決策はあるのでしょうが、そろそろ、"UTF-8" でもいいんじゃないかと思い
今後は、メール送信する場合は、"UTF-8" での送信を進めていくことにします。
環境
OS : Windows-10PHP : PHP-7.3.2 (Xampp)
PHPMailer : 6.1.5
PHP
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
// Composer を使っています。
require 'autoload.php';
date_default_timezone_set('Asia/Tokyo');
mb_language('japanese');
mb_internal_encoding('utf-8');
$mail = new PHPMailer();
$mail->CharSet = 'utf-8';
// デバックの設定はお好みで
$mail->SMTPDebug = 2;
// SMTP
$mail->isSMTP();
// hostname
$mail->Host = 'smtp.gmail.com';
// SMTP port (587)
$mail->Port = 587;
// 暗号化 (ssl|tls)
$mail->SMTPSecure = 'tls';
// SMTP認証
$mail->SMTPAuth = TRUE;
// ユーザー名 (Gmailのアカウント名)
$mail->Username = "example@gmail.com";
// パスワード (Gmailのパスワード)
$mail->Password = "PASSWORD";
// オプション (※ これを設定していなかった為、送信に失敗していた)
$mail->SMTPOptions = [
'ssl' => [
// SSLサーバー証明書の検証を要求するか (デフォルト:TRUE)
'verify_peer' => FALSE
// ピア名の検証を要求するか (デフォルト:TRUE)
,'verify_peer_name' => FALSE
// 自己証明の証明書を許可するか (デフォルト:FALSE、TRUEにする場合は「verify_peer」をFALSEにする)
,'allow_self_signed' => TRUE
]
];
// From address
$mail->setFrom('送信元メールアドレス', '送信者名');
// Reply-to address
$mail->addReplyTo('返信先メールアドレス', '送信者名');
// To address
$mail->addAddress('送信先メールアドレス', '受信者名');
// 件名
$mail->Subject = 'PHPMailer SMTP GMail テスト';
// 本文 HTMLを無効 (PLAINのみ)
$mail->isHTML(false);
$mail->Body = 'PHPMailer SMTP GMail テスト 本文';
// X-Mailer を非表示にする
$mail->XMailer = null;
// 送信
if ( ! $mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
以上
Windows-10 の PHP-7.3(Xampp) 環境で、PHPMailer から Gmail 経由でメール送信する方法でした。
0 件のコメント:
コメントを投稿