DockerコンテナにPHPMailerをインストールしGmailでメールを送信する方法


Dockerfileの中ではなく、PHPのDockerコンテナに入ってPHPMailerをインストールしてGmail送信した時の手順を残しておきます。

レンタルサーバ上ではサーバからそのままメールを送りますが、ローカル開発はDockerで行っており、ローカルでのメール送信系はGmailを使う事にしました。

まず、Dockerコンテナに入ります。

docker ps

docker exec -it {コンテナ名} bash

コンテナに入ったら

Dockerコンテナ内で以下のコマンドを順番に実行して、zip、unzip、Gitをインストールします。

apt-get update
apt-get install -y zip unzip git

続いてPHPMailerをインストールするためにComposerを使用します。まず、Composerをインストールします。同じくこの順番でコマンド発行します。

apt-get update
apt-get install -y wget
wget https://getcomposer.org/installer -O composer-setup.php
php composer-setup.php –install-dir=/usr/local/bin –filename=composer

終わったら、PHPMailerをプロジェクトに追加します。

composer require phpmailer/phpmailer

これにより、既存のDockerコンテナ内でPHPMailerがインストールされます。Composerを使用してPHPMailerをインストールすることで、依存関係を解決し、PHPプロジェクト内でPHPMailerを使用できるようになります。

因みにComposer(コンポーザー)は、PHPの依存関係管理ツールであり、PHPのパッケージ(ライブラリやフレームワークなど)を管理するためのツールです。Composerを使用することで、外部ライブラリを簡単にインストールし、プロジェクトの依存関係を効果的に管理することができます。色々なパラメータがあるので必要に応じて自分で調べてみてください。

あとは、phpのスクリプト内でPHPMailerを読み込ませればOKです。PHPMailerをインストールするとvendorディレクトリが自動で作成されます。

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require ‘./vendor/phpmailer/phpmailer/src/Exception.php’;
require ‘./vendor/phpmailer/phpmailer/src/PHPMailer.php’;
require ‘./vendor/phpmailer/phpmailer/src/SMTP.php’;

PHPMailerでメール送信した時に文字化けする場合には

$mail->CharSet = “utf-8”;
$mail->Encoding = “base64”;

この指定をしておきましょう。これで文字化けが解消されました。

また、VS Code  > 問題 を選択するとで2023年10月29日時点で

PHPMailerの中にバグが複数個ありました。

開発した人は気付いていないんじゃないかと思われます。

もっとも普通にメール送信は出来たので良しとします。

 


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA