首页 > 解决方案 > 使用 smtplib 发送邮件在本地部署时有效,但在 swarm 中部署时失败(无法分配请求的地址)

问题描述

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

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

根据我找到的信息,我猜测发送电子邮件时的传出连接配置有问题,但我仍然不确定容器在部署时发送电子邮件需要什么额外配置与在本地部署相比,一群。

在 dockerfile 中,只有 5000 端口被暴露并绑定到烧瓶服务器。

使用 smtplib 发送电子邮件时,只需要指定 smtp 服务器的端口(在我的情况下为 587)。

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

标签: pythondockerconnectionsmtplibswarm

解决方案


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

- ports
  - "587:587"

推荐阅读