DockerのPHPコンテナからメールを送信しようと思ったら、エラーが出て送信できなかったので、メールの送信機能を追加しました。
PHPMailerを使用してSMTPで送信すれば良い話なのですが、気軽にPHPからmailコマンドで送信したかったのです。
今回のコンテナの仕様は、こんな感じです。
- Alpine3.8
- PHP7.2
- nkf
- PDOでMySQLに接続
- s3にPHPから接続
このコンテナに、sSMTPを追加して、以下のようなDockerファイルに仕上げました。
※このコンテナはコマンドラインで使うものですので、php7-fpm や php7-opcache は入れていません。
FROM alpine:3.8
MAINTAINER Takashi Hashimoto <hashimoto@bagooon.com>
ENV NKF_VERSION 2.1.5
# Install packages
RUN apk --no-cache add \
php7 \
php7-mysqli \
php7-pdo_mysql \
php7-json \
php7-zlib \
php7-xml \
php7-phar \
php7-intl \
php7-mbstring \
php7-simplexml \
ssmtp \
composer \
&& echo 'sendmail_path = "/usr/sbin/ssmtp -t"' > /etc/php7/conf.d/mail.ini \
&& apk add --no-cache --virtual .build-deps \
wget \
make \
gcc \
g++ \
&& wget https://ja.osdn.net/dl/nkf/nkf-${NKF_VERSION}.tar.gz \
&& tar zxvf nkf-${NKF_VERSION}.tar.gz \
&& rm nkf-${NKF_VERSION}.tar.gz \
&& cd nkf-${NKF_VERSION} \
&& make \
&& make install \
&& cd .. \
&& rm -Rf nkf-${NKF_VERSION} \
&& apk del .build-deps
COPY config/php.ini /etc/php7/conf.d/zzz_custom.ini
COPY config/ssmtp.conf /etc/ssmtp/ssmtp.conf
COPY config/revaliases /etc/ssmtp/revaliases
# Add application
RUN mkdir -p /var/work
WORKDIR /var/work
CMD ["tail", "-f", "/dev/null"]
設定ファイルはこんな感じです。
※以下の3ファイルはconfigフォルダに入れます。
[ php.ini ]
[PHP]
post_max_size = 20M
upload_max_filesize = 20M
memory_limit = 128M
[Date]
date.timezone="Asia/Tokyo"
[Pdo_mysql]
pdo_mysql.cache_size = 2000
[ ssmtp.conf ]
root=postmaster
MailHub=smtp.xxxx.com:587
Hostname=xxxx.com
AuthUser=USERNAME
AuthPass=PASSWORD
UseSTARTTLS=YES
MailHub:STMPサーバーのホストネームとポートを指定
Hostname:このサーバのホストネームを指定
AuthUser:SMTPAuthのユーザー名
AuthPass:SMTPAuthのパスワード
SSLを使う場合は、UseSTARTTLS=YES または UseTLS=YES
ssmtp.conf のほかに、revaliasesという設定ファイルがあります。このファイルを設定すると、送信元のメールアドレスをユーザー毎に書き換えることが出来ます。
[ revaliases ]
root:hoge@fuga.jp
上記のように設定すると、rootユーザーから送信したメールの送信者は「hoge@fuga.jp」に置換されます。
ファイルを以下の位置に配置してbuildします。
Dockerfile
└ config
├ php.ini
├ ssmtp.conf
└ revaliases
PHPのmailコマンドで、サクッとメールを送信出来るようになりました。
mail('hashimoto@bagooon.com', 'test mail', 'yattane!');
ホームページの制作(デザイン・コーディング・プログラミング)に加え、ネットショップの販売促進に関するアドバイスも致します。 20年以上に渡って実際にネットショップを運営した経験を生かし、聞きかじりではない実績を伴ったノウハウを、自分の言葉でお伝えいたします。 プログラミングの経験は30年以上。HTML、CSS、JavaScript、TypeScript、Vue、NuxtJS、Node.js、MySQL、MongoDB、Elasticsearch、WordPress、PHP、Docker、Electronなど、幅広く対応します。
コメント