使用php和sendmail发送测试docker容器的电子邮件

rat*_*atm 3 php sendmail docker php-5.6 docker-compose

我在ubuntu 16.04上.我有一个(测试)docker(docker-compose)容器运行php 5.6和apache 2.4.

使用生产平台(没有泊坞窗),邮件将与sendmail一起发送.

如何在docker容器上发送测试邮件(使用sendmail)?

在此先感谢您的回复.

rat*_*atm 9

有用.

在Dockerfile中:

# sendmail config
############################################

RUN apt-get install -q -y ssmtp mailutils

# root is the person who gets all mail for userids < 1000
RUN echo "root=yourAdmin@email.com" >> /etc/ssmtp/ssmtp.conf

# Here is the gmail configuration (or change it to your private smtp server)
RUN echo "mailhub=smtp.gmail.com:587" >> /etc/ssmtp/ssmtp.conf
RUN echo "AuthUser=your@gmail.com" >> /etc/ssmtp/ssmtp.conf
RUN echo "AuthPass=yourGmailPass" >> /etc/ssmtp/ssmtp.conf

RUN echo "UseTLS=YES" >> /etc/ssmtp/ssmtp.conf
RUN echo "UseSTARTTLS=YES" >> /etc/ssmtp/ssmtp.conf


# Set up php sendmail config
RUN echo "sendmail_path=sendmail -i -t" >> /usr/local/etc/php/conf.d/php-sendmail.ini
Run Code Online (Sandbox Code Playgroud)

用于测试php sendmail容器:

echo "Un message de test" | mail -s "sujet de test" mailSendingAdresse@email.com
Run Code Online (Sandbox Code Playgroud)

我在这两份文件的帮助下取得了成功:

  • 那效果很好。请注意,在大多数情况下,人们也希望执行 `RUN echo "FromLineOverride=YES" &gt;&gt; /etc/ssmtp/ssmtp.conf`。因此,这允许您在邮件客户端/脚本中设置自己的“发件人:”名称和地址,而不是获取默认值,例如“发件人:www-data ...”。 (3认同)

Sam*_*uel 5

如果它说:

“软件包‘ssmtp’没有安装候选”

您可以使用msmtp代替。

将以下内容添加到您的 dockerfile 中

# sendmail config
#################
ARG SMTP_PASSWORD=not_provided
# install
RUN apt-get install -q -y msmtp mailutils
# config
COPY msmtprc /etc/msmtprc
RUN chmod 600 /etc/msmtprc
RUN chown www-data:www-data /etc/msmtprc
ARG SMTP_PASSWORD=not_provided
RUN sed -i "s|YourAwesomeStr0ngP4zzw0rd|$SMTP_PASSWORD|g" /etc/msmtprc
# Set up php sendmail config
RUN echo "sendmail_path=/usr/bin/msmtp -t" >> /etc/php/7.3/apache2/conf.d/php-sendmail.ini
Run Code Online (Sandbox Code Playgroud)

将文件添加msmtprc到您的 docker 构建上下文:

account default
host mail.yoursmtpserver.com
port 587
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
tls_certcheck on
auth on
user my@mail.com
password "YourAwesomeStr0ngP4zzw0rd"
from "my@mail.com"
logfile /var/log/msmtp.log
Run Code Online (Sandbox Code Playgroud)

注意:进行了一些更改,以便使其适用于我的特定设置(分支FROM eboraas/apache-php)。这尤其适用于以下几行:

  • ARG SMTP_PASSWORD=not_provided
  • 运行 chown www-data:www-data /etc/msmtprc
  • 运行 sed -i "s|YourAwesomeStr0ngP4zzw0rd|$SMTP_PASSWORD |g" /etc/msmtprc
  • 运行 echo "sendmail_path=/usr/bin/msmtp -t" >> /etc/php/7.3/apache2/conf.d/php-sendmail.ini

您可能需要调整路径、密码等以满足您的需求。如果您想立即使用此解决方案,请记住SMTP_PASSWORD从环境中设置构建参数(例如)。SMTP_PASSWORD=<secret> docker-compose build

有用的资源: