【问题标题】:Send mail with smtplib works when deployed in local but fails when deployed in swarm (Cannot assign requested address)使用 smtplib 发送邮件在本地部署时有效,但在 swarm 中部署时失败(无法分配请求的地址)
【发布时间】:2020-05-29 08:36:45
【问题描述】:

我们有一个带有 python 烧瓶服务的容器,它在端口 5000 中侦听。我们需要能够从该容器向 smtp.office365.com 发送通知电子邮件到端口 587。

这个容器,当部署在本地机器上时可以正常工作,但是当部署在swarm服务器上时,返回以下错误代码:[Errno 99] Cannot assign requested address

根据我查到的信息,我猜是发送邮件的时候外向连接的配置有问题,但是我还是不确定容器发送邮件需要什么额外的配置与在本地部署相比,在集群中部署时。

在dockerfile中,只暴露了5000端口并绑定到flask服务器。

使用 smtplib 发送邮件时,只需要指定 smtp 服务器的端口(我这里是 587)。

我会错过什么?我需要为此公开新端口吗?绑定到本地主机可能有问题吗?我不清楚邮件的路径,因为它是从我的 python 代码发送的,直到它到达 smtp 服务器。

【问题讨论】:

  • 我有一个非常相似的问题。邮件是在 localhost 中的 docker-compose 下使用 smtplib 发送的,但是在 linode 中的 docker-compose 下运行它会失败并出现同样的错误。我想知道您是否找到任何解决方案...

标签: python docker connection smtplib swarm


【解决方案1】:

在使用 docker-compose 时遇到了同样的问题。在我使用 compose 打开端口“587”后工作

- ports
  - "587:587"

【讨论】:

  • 如果您解释了如何“打开端口 587”,这个答案会更加有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-14
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-28
  • 1970-01-01
相关资源
最近更新 更多