
※エラーログを追記しました。
function.phpの「error_reporting(0);」を削除したらエラーログが出ました。
PHPMailerライブラリを利用して、
メールの送信キューをプログラムで組んでいました。
※送信タスクに格納して、バックエンドで1分おきに動作して、送信タスクがあれば送信
突然、メールが送信されなくなりました。
送信されないので、当然ながら受信はされません。
送信されないと判断した理由は、DBを確認すると、
格納されていた送信タスクからレコードが削除されなくなったからです。
そこで、問題の切り分けのため、初歩的ですが...
$mail->send();の前後に、echoで出力しました。
結果はデバッグログにある通り、「送信前」しかありませんでした。
分かったことは、
「送信後」まで到達していないことでした。
昨日までは正常に動作していたのに...
デバックログを確認しても理由が分かりませんでした。
また、 echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";のログもありません。
デバックのログと、PHPMailerのプログラムコードは以下になります。
アドバイス等ありましたら教えて頂けますでしょうか。
何卒よろしくお願い致します。
php
送信前 debug level 3; message: Connection: opening to ssl://smtp.gmail.com:465, timeout=300, options=array() debug level 3; message: Connection: opened debug level 2; message: SERVER -> CLIENT: 220 smtp.gmail.com ESMTP t18sm6074337pfl.138 - gsmtp debug level 1; message: CLIENT -> SERVER: EHLO exsample.com debug level 2; message: SERVER -> CLIENT: 250-smtp.gmail.com at your service, [*.*.*.*] 250-SIZE 35882577 250-8BITMIME 250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250 SMTPUTF8 Fatal error: Uncaught League\OAuth2\Client\Provider\Exception\IdentityProviderException: invalid_grant in /home/***/***.com/public_html/***/***/PHPMailer/vendor/league/oauth2-google/src/Provider/Google.php:118 Stack trace: #0 /home/***/***.com/public_html/***/***/PHPMailer/vendor/league/oauth2-client/src/Provider/AbstractProvider.php(628): League\OAuth2\Client\Provider\Google->checkResponse(Object(GuzzleHttp\Psr7\Response), Array) #1 /home/***/***.com/public_html/***/***/PHPMailer/vendor/league/oauth2-client/src/Provider/AbstractProvider.php(537): League\OAuth2\Client\Provider\AbstractProvider->getParsedResponse(Object(GuzzleHttp\Psr7\Request)) #2 /home/***/***.com/public_html/***/***/PHPMailer/vendor/phpmailer/phpmailer/src/OAuth.php(115): League\OAuth2\Client\Provider\AbstractProvider->getAccessToken(Object(League\OAuth2\Client\Grant\RefreshToken), Array) #3 /home/***/***.com/public_html/***/***/PHPMailer/vendor/phpmailer/phpmailer/src/OAuth.php(128): PHPMailer\PHPM in /home/***/***.com/public_html/***/***/PHPMailer/vendor/league/oauth2-google/src/Provider/Google.php on line 118
php
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; use PHPMailer\PHPMailer\OAuth; // Alias the League Google OAuth2 provider class use League\OAuth2\Client\Provider\Google;// ### 追加 ### require(dirname(__FILE__). '/PHPMailer/vendor/autoload.php'); //mbstring の日本語設定 mb_language("$MAILLANGUAGE"); mb_internal_encoding("UTF-8"); date_default_timezone_set("$TIMEZONE"); try { $sql = "SELECT * FROM q"; $stmt = $pdo1 -> query($sql); $result = $stmt->fetchall(); foreach($result as $row){ // インスタンスを生成 $mail = new PHPMailer(true); $mail->CharSet = "UTF-8"; //サーバの設定 $mail->SMTPDebug = 3; $mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str<br>";}; $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->AuthType = 'XOAUTH2'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465; // ### OAUTH2 の設定 ### $google_email = $row['From']; $clientId = $row['Gid'];// $clientSecret = $row['Gsecret']; $refreshToken = $row['Gtoken']; $provider = new Google( [ 'clientId' => $clientId, 'clientSecret' => $clientSecret, ] ); $mail->setOAuth( new OAuth( [ 'provider' => $provider, 'clientId' => $clientId, 'clientSecret' => $clientSecret, 'refreshToken' => $refreshToken, 'userName' => $google_email, ] ) ); // ### OAUTH2 の設定 ここまで ### //差出人アドレス(Gmail のアドレス), 差出人名 $mail->setFrom($google_email, mb_encode_mimeheader($TITLE)); $mail->addAddress($row['To'], mb_encode_mimeheader("")); $mail->addReplyTo($ReplyToEMAIL, mb_encode_mimeheader("")); //コンテンツ設定 $mail->isHTML(false); // HTML形式を指定 $mail->Subject = mb_encode_mimeheader($row['Title']); $mail->Body = mb_convert_encoding($row['Body'],"UTF-8","UTF-8"); echo "送信前"; $mail->send(); //送信 echo "送信後"; //キューを消す $sql = "DELETE FROM q WHERE Id=?"; $stmt = $pdo1->prepare($sql); $array = array($row['Id']); $stmt -> execute($array); } }catch (Exception $e) { echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"; } ?>

まだ回答がついていません
会員登録して回答してみよう