我正在从 Jenkins 内部将邮件发送到匿名 SMTP 中继。然后,该中继通过端口 587 上的 TLS 安全地发送邮件进行在线交换。传输工作正常,问题是 Microsoft 要求发件人地址与身份验证凭据登录名匹配,该登录名与帐户电子邮件地址相同。例如,假设这是 [email protected]。如何让 jenkins 始终从 [email protected] 发送邮件?
顺便说一句,当我说传输工作完美时,我的具体意思是,我可以将格式化的电子邮件文件放入 SMTP 中继服务器上的“Pickup”目录中,并且只要发件人地址是 foo@,它就会正确发送到任何收件人mycompany.com。
Jenkins 使用系统管理员电子邮件地址作为电子邮件通知的发件人地址。您可以在管理 Jenkins -> 配置系统下进行配置。这是该页面上的 Jenkins Location 标题下!此设置与电子邮件通知设置的关联并不明显,因为它不在配置页面上的电子邮件通知标题下。
管理 Jenkins -> 配置系统 -> Jenkins 位置 -> 系统管理员电子邮件地址
您可以在页面中搜索“Jenkins Location”,将尚未配置的默认地址值更改为您想要的值。
我不确定这是否是您的意思,但 Jenkins 使您能够提供完整的发件人电子邮件地址以进行通知。转到 管理 jenkins,然后系统配置并找到名为 电子邮件通知的部分。
您可以以
Jenkins <[email protected]>
的形式提供您的电子邮件地址。
如果您需要在不使用 jenkins UI 的情况下执行此操作(例如自动化 jenkins 设置) - 您可以使用 groovy 脚本来执行此操作。
import jenkins.model.*
def jenkinsLocationConfiguration = JenkinsLocationConfiguration.get()
jenkinsLocationConfiguration.setAdminAddress("[your admin name] <[your admin email address]>")
// example format -> .setAdminAddress("Jane Doe <foo@company_email.com>")
jenkinsLocationConfiguration.save()
请注意:这个脚本不是我写的(尽管我已经测试过它并且它有效),这一切都归功于 Peter Halliday 和他的网站以及其他有用的常规脚本这里。
import javax.mail.Message.RecipientType
import javax.mail.Address
import javax.mail.internet.InternetAddress
import javax.mail.internet.MimeMessage
msg.setFrom(new InternetAddress("[email protected]"))
配置文件位于Jenkins主目录下的jenkins.model.JenkinsLocationConfiguration.xml中。
如果您使用脚本来设置 Jenkins。