我正在尝试使用我的 Office365 SMTP 服务器通过电子邮件扩展插件通过 Jenkins 发送失败管道的电子邮件通知。在调试模式下使用失败的管道进行测试时,我得到了
501 5.5.4 Invalid domain name
。垃圾字符似乎不在 EHLO 和 HELO 命令之后,但我没有找到配置主机名的方法。还有人遇到这个吗?
Successfully created MimeMessage
Sending email to: [email protected]
DEBUG: getProvider() returning jakarta.mail.Provider[TRANSPORT,smtp,org.eclipse.angus.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: need username and password for authentication
DEBUG SMTP: protocolConnect returning false, host=smtp-mail.outlook.com, user=jenkins, password=<null>
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.office365.com", port 587, isSSL false
220 BN9PR03CA0850.outlook.office365.com Microsoft ESMTP MAIL Service ready at Thu, 29 Aug 2024 20:27:00 +0000 [08DCC75C8712D891]
DEBUG SMTP: connected to host "smtp.office365.com", port: 587
EHLO internalr8.internal���������������
501 5.5.4 Invalid domain name [BN9PR03CA0850.namprd03.prod.outlook.com 2024-08-29T20:27:06.007Z 08DCC75C8712D891]
HELO internalr8.internal���������������
501 5.5.4 Invalid domain name [BN9PR03CA0850.namprd03.prod.outlook.com 2024-08-29T20:27:11.007Z 08DCC75C8712D891]
MessagingException message: 501 5.5.4 Invalid domain name [BN9PR03CA0850.namprd03.prod.outlook.com 2024-08-29T20:27:11.007Z 08DCC75C8712D891]
我目前的理论是,它所拾取的主机的某些内容导致了语法错误。我能够使用
swak
从命令行发送测试电子邮件,因此 SMTP 服务器正在运行并且可以使用服务器主机名。我有一个不同的詹金斯主机名。
在 /etc/hosts 中,同一 IP 地址有多个 FQDN(IT 维护):
XX.X.X.XX internalr8.internal internal-alias internal.internal
我的 Jenkins 位置是
https://internal.internal/
,我的 Jenkins 配置中有 "JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dmail.smtp.starttls.enable=true"
。
这是由 /etc/hosts 文件中的隐藏字符引起的。
这是 cat /etc/hosts 的输出
XX.X.X.XX internalr8.internal internal-alias internal.internal
但这是 cat -v /etc/hosts 查找隐藏字符的输出:
XX.X.X.XX internalr8.internalM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- internal-alias internal.internal
这与 EHLO/HELO 命令输出中的未知字符数 (15) 匹配。隐藏字符可能是由某人的文本编辑器添加的,并且大多数事情在大多数情况下都有效......但显然不是这个插件:)
自从删除它们后,插件就完美运行了!