以下https://stackoverflow.com/a/62543536/6009580 我尝试过使用主机的 SMTP 服务器从 docker 容器发送邮件。
什么在起作用:
[HOST]$ echo "Test mail." | mail -s "message" [email protected] # works
[HOST]$ sudo docker run --net=host -it python
[python-container] >>> import smtplib
[python-container] >>> s = smtplib.SMTP('localhost')
[python-container] >>> s.sendmail("[email protected]",["[email protected]"],"message") # works
什么不起作用:
[HOST]$ sudo docker run -it python
[python-container] >>> import smtplib
[python-container] >>> s = smtplib.SMTP('host.docker.internal')
socket.gaierror: [Errno -2] Name or service not known
即使我用
启动容器[HOST]$ sudo docker run --add-host=host.docker.internal:host-gateway -it python
[python-container] >>> import smtplib
[python-container] >>> s = smtplib.SMTP('host.docker.internal')
ConnectionRefusedError: [Errno 111] Connection refused
如有任何帮助,我们将不胜感激
系统:
从 Docker 容器使用主机的 SMTP 服务器的技巧是将主机 SMTP 服务器配置为侦听
docker0
网络接口 IP 上的连接(docker0
是 Docker 的桥接网络接口)。
确保 SMTP 服务器接受来自 Docker 网络地址池(
172.17.0.0/12
和 192.168.0.0/16
)的中继或通过 docker0
接口 IP 地址发送时的中继。
配置容器化应用程序以使用
docker0
接口 IP 地址(默认为 172.17.0.1
)作为 SMTP 服务器。
请注意,干净地发送电子邮件并不简单。它需要正确配置 SPF、DKIM 和 DMARC。 我建议新手使用第三方SMTP服务器。
如果您需要这样的设置来满足开发需求,请查看Mailpit。