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の中にバグが複数個ありました。
開発した人は気付いていないんじゃないかと思われます。
もっとも普通にメール送信は出来たので良しとします。