PHPMailerでGoogleWorspaceからメール送信を行う

2022年7月14日

PHPMailerのトラブルシューティングを見ると以下のように記述されています。

2014年12月から、Googleは、Gmailを含むアプリにアクセスするために、OAuth2に基づくXOAUTH2と呼ばれる認証メカニズムの導入を開始しました。この変更により、GmailへのSMTPアクセスとIMAPアクセスの両方が破損する可能性があり、多くの電子メールクライアントから認証の失敗(多くの場合、「5.7.14 Webブラウザーからログインしてから、再試行してください」または「ユーザー名とパスワードが受け入れられません」)を受け取る可能性があります。

XOAUTHを設定しないとうまくメールが送れないようです。

XOAUTH2を使ってメールを送信する

GoogleDevelopConsoleにてプロジェクトの設定を行う

開発者コンソールにてPHPMailerでメールを送るためのプロジェクトを作成する必要があります。
開発者コンソールはこちら

以下のブログを見て、XOAUTH接続に必要なクライアントID、シークレット、リフレッシュトークンを取得してください
https://symfoware.blog.fc2.com/blog-entry-2387.html

https://github.com/PHPMailer/PHPMailer/wiki/Using-Gmail-with-XOAUTH2


PHPMailerにGoogle用のOAuthライブラリをインストールする

Composerを使ってライブラリをインストールします

composer require league/oauth2-google

OAuthの設定を行う

$this->mailer = new PHPMailer();		
$mailer->AuthType = 'XOAUTH2';
		
$provider = new Google(
	[
		'clientId' => 取得したクライアントID,
		'clientSecret' => 取得したシークレット,
	]
);

$mailer->setOAuth(
	new OAuth(
		[
			'provider' => $provider,
			'clientId' => 取得したクライアントID,
			'clientSecret' =>  取得したシークレット,
			'refreshToken' =>  取得したリフレッシュトークン,
			'userName' => Gmailアカウント(xxx@xxxx.com),
		]
	)
);	

開発

Posted by ehara