通过curl(smpt)在Docker Container中发送电子邮件

时间:2017-08-15 02:22:00

标签: linux docker smtp openshift dockerfile

我可以在本地使用以下脚本接收电子邮件。

rtmp_url="smtp://smtp.xxx.com:25"
rtmp_from="noreply@xxx.com"
rtmp_to="receiver-email@xxx.com"

file_upload="mail.txt"

echo "From: $rtmp_from
To: $rtmp_to
Subject: example of mail
Cc:
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=\"MULTIPART-MIXED-BOUNDARY\"

--MULTIPART-MIXED-BOUNDARY
Content-Type: multipart/alternative; boundary=\"MULTIPART-ALTERNATIVE-BOUNDARY\"

--MULTIPART-ALTERNATIVE-BOUNDARY
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline

This is an email example. This is text/plain content inside the mail.
--MULTIPART-ALTERNATIVE-BOUNDARY--
--MULTIPART-MIXED-BOUNDARY
Content-Type: application/octet-stream;
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"logs.txt\"" > ./mail.txt

cat ./mail.txt | base64 >> ./mail.txt
# end of uploaded file
echo "--MULTIPART-MIXED-BOUNDARY--" >> ./mail.txt

echo "sending ...."

curl --url 'smtp://smtp.xxx.com:25' --ssl-reqd   --mail-from $rtmp_from --mail-rcpt $rtmp_to  -T './mail.txt' --insecure

但是我试图在docker容器中运行这个脚本。我在容器中收到此错误:连接到smtp.xxx.com:25失败;没有到主机的路由。 在我的电脑中,我在/etc/ssmtp/ssmtp.conf中将mailhub更改为smtp.xxx.com,因此它在本地运行。我是docker的新手,不知道如何在docker容器中实现这一点。请帮忙。

1 个答案:

答案 0 :(得分:0)

在您的主机上执行cat /etc/resolv.conf。您将在主机上看到一些DNS配置。这需要配置为docker守护程序

创建文件/etc/docker/daemon.json

{
"dns": ["IP1", "IP2"]
}

重新启动docker服务,然后再试一次,看看这是否适合你。

您可能在办公室网络上,您应该使用自己的DNS服务器。所以你需要告诉Docker守护进程它的容器应该使用哪个DNS服务器。这就是造成这个问题的原因。 daemon.json文件可用于更改守护程序配置。