python - 使用 smtplib 发送邮件在本地部署时有效,但在 swarm 中部署时失败(无法分配请求的地址)
问题描述
我们有一个带有 python 烧瓶服务的容器,它在端口 5000 中侦听。我们需要能够从该容器向 smtp.office365.com 发送通知电子邮件到端口 587。
这个容器,当部署在本地机器上时可以完美运行,但是当部署在 swarm 服务器中时,返回以下错误代码:[Errno 99] Cannot assign requested address
根据我找到的信息,我猜测发送电子邮件时的传出连接配置有问题,但我仍然不确定容器在部署时发送电子邮件需要什么额外配置与在本地部署相比,一群。
在 dockerfile 中,只有 5000 端口被暴露并绑定到烧瓶服务器。
使用 smtplib 发送电子邮件时,只需要指定 smtp 服务器的端口(在我的情况下为 587)。
我会错过什么?我需要为此公开新端口吗?绑定到本地主机可能有问题吗?我没有清楚地了解邮件所遵循的路径,因为它是从我的 python 代码发送的,直到它到达 smtp 服务器。
解决方案
在使用 docker-compose 时遇到了同样的问题。在我使用 compose 打开端口“587”后工作
- ports
- "587:587"
推荐阅读
- amazon-web-services - 如何从 Lambda@Edge 函数访问 documentDB?
- bash - 如果 VPN 断开连接,通过 ssh 和 sshpass 在远程服务器上运行我的交互式 bash 脚本时出现问题
- php - Laravel - 如何通过发送短信来调整奇怪行为的问题
- css - 我希望每个项目之间都有一个间距,我使用 Reactstrap 表
- java - 如果两个类具有共同的字段,那么可以使用哪种设计模式,这样我们就不需要创建新的类了?
- loops - 循环快照数据并为每个标记 Flutter
- jquery - easyui 从 ajax 返回 undefined
- javascript - 不要让用户导航或缩小区域 ARCGIS
- php - Laravel:使用带有 where 子句的数据透视表获取单个模型
- javascript - 如何将 3 维张量传递到密集层(tensorflow.js)