java - JavaMail 无法从 docker 容器发送电子邮件
问题描述
我刚刚将一些 Java 代码部署到生产环境(它是部署在 Tomcat 中的 Java Web 应用程序),我注意到负责发送电子邮件的模块开始出现故障。
当代码在我的本地系统上运行时,情况并非如此。我至少可以发送到雅虎!我本地服务器上的邮件、谷歌邮件和邮箱。
从我的本地系统发送时,我的服务器上的日志(/var/log/maillog)
节目:
Jun 8 08:37:22 folo-folo postfix/smtps/smtpd[31137]: connect from unknown[41.220.75.164]
Jun 8 08:37:25 folo-folo postfix/smtps/smtpd[31137]: 67EA680EA480: client=unknown[41.220.75.164], sasl_method=LOGIN, sasl_username=helpdesk@folo-folo.com
Jun 8 08:37:26 folo-folo postfix/cleanup[31216]: 67EA680EA480: message-id=<1177096266.0.1559979567305.JavaMail.gbemirojiboye@Gbemiros-MacBook-Pro.local>
Jun 8 08:37:26 folo-folo postfix/qmgr[6945]: 67EA680EA480: from=<helpdesk@folo-folo.com>, size=530, nrcpt=2 (queue active)
Jun 8 08:37:26 folo-folo postfix/smtps/smtpd[31137]: disconnect from unknown[41.220.75.164]
Jun 8 08:37:26 folo-folo postfix/smtp[31217]: 67EA680EA480: to=<xxxx@gmail.com>, relay=gmail-smtp-in.l.google.com[108.177.15.26]:25, delay=1.7, delays=1.1/0.02/0.3/0.24, dsn=2.0.0, status=sent (250 2.0.0 OK 1559979574 e2si3106225wrj.113 - gsmtp)
Jun 8 08:37:28 folo-folo postfix/smtp[31218]: 67EA680EA480: to=<xxxx@yahoo.com>, relay=mta7.am0.yahoodns.net[98.137.159.24]:25, delay=3.4, delays=1.1/0.03/1.5/0.79, dsn=2.0.0, status=sent (250 ok dirdel)
Jun 8 08:37:28 folo-folo postfix/qmgr[6945]: 67EA680EA480: removed
该消息最终被发送。
但是,当从 docker 容器内的 tomcat 中部署的同一个应用程序发送时,日志变为:
Jun 8 08:34:27 folo-folo postfix/smtps/smtpd[30255]: connect from unknown[172.18.0.6]
Jun 8 08:34:29 folo-folo postfix/smtps/smtpd[30255]: warning: unknown[172.18.0.6]: SASL LOGIN authentication failed: **UGFzc3dvcmQ6**
Jun 8 08:34:29 folo-folo postfix/smtps/smtpd[30255]: lost connection after AUTH from unknown[172.18.0.6]
Jun 8 08:34:29 folo-folo postfix/smtps/smtpd[30255]: disconnect from unknown[172.18.0.6]
永远不会发送此消息。
我可以从主机上的服务器日志中看到 Docker 容器能够发出邮件请求,但由于某种原因,身份验证失败。
我可以大胆猜测,如果我向主机容器上的 api 发出请求并让它发送电子邮件,它会起作用。但这对我的设计来说非常不方便。
我该如何解决这个问题?
我应该提到这里的问题看起来很像这里发布的问题
解决方案
这是我的错误。
我的凭据混淆了,这就是导致从 Docker 发出请求时出错的原因。
更正凭据使错误消失。
推荐阅读
- python - resnet50 的差验证 Acc 和高验证损失
- javascript - 当我在我的 vue.js 项目中修改一个节点模块时,我是否必须重新编译一些东西才能让它工作?变化没有反映
- javascript - 从 asp.net 获取数据到 highchart.js
- html - Outlook 模板的 HTML/CSS 格式 - 表格/行/单元格高度不起作用
- c++ - 类似的解决方案但不同的答案
- pdf - 使用 pdftk 从 PDF 解压附件时保留目录结构?
- python-3.x - Scrapy从csv或数组中抓取保存的链接
- unix - 从 jenkins 执行 shell 运行 ansible playbook
- javascript - fs.writeFile 在新创建的 vue 项目中不起作用
- asp.net-mvc - Handle Vue Route on Page Reload from MVC Controller