如何在Jenkins中设置发送者的地址?

248

我正在使用Jenkins向内部的匿名SMTP中继发送邮件。然后,该中继通过TLS在端口587上安全地向Exchange Online发送邮件。传输完美运行,问题是Microsoft要求发送者地址与身份验证凭据登录名称匹配,这与帐户电子邮件地址相同。 例如,假设这是foo@mycompany.com。我如何使Jenkins始终从foo@mycompany.com发送邮件?

顺便说一下,当我说传输完美运行时,我的意思是我可以将格式化的电子邮件文件放入SMTP中继服务器上的“Pickup”目录中,并且只要发件人地址为foo@mycompany.com,它就可以正确地发送给任何收件人。


有人知道如何在不使用UI的情况下完成这个任务吗?也许可以通过CLI、Groovy脚本或甚至Jenkins作业来完成? - jdf
在没有UI的情况下,我回答了自己有关更改管理员电子邮件地址的问题。 - jdf
7个回答

390

Jenkins使用系统管理员电子邮件地址作为电子邮件通知的发件人地址。您可以在管理Jenkins->配置系统下进行配置。此设置位于页面上的Jenkins位置标题下!由于它不在配置页面上的电子邮件通知标题下,因此不会立即显而易见地与电子邮件通知设置相关联。


1
使用Ubuntu 12.04,本地exim4和Jenkins 1.565.1,从外部仓库安装,我必须进行设置以使邮件传递正常工作。 - Max Hohenegger
如果我能给你500个赞,我一定会的!!!太棒了,解决了我的问题。 - Ironluca

113

管理 Jenkins -> 配置系统 -> Jenkins 位置 -> 系统管理员电子邮件地址

您可以搜索“Jenkins 位置”页面,将尚未配置的默认地址更改为任何您想要的地址。


管理Jenkins -> 配置系统 -> Jenkins位置 -> 系统管理员电子邮件地址,直截了当,谢谢。 - Frohlich
当作业失败时发送通知,这是“发件人”地址吗? - Danijel

37

设置“邮件通知”有两个地方可以添加:

  1. 全局级别
  2. 本地级别(Jenkins作业级别)

要在全局级别设置电子邮件通知,请按照以下步骤操作: 1)进入“管理Jenkins” 2)配置系统 3)Jenkins位置 4)系统管理员电子邮件地址

enter image description here

要在本地级别(每个Jenkins作业级别)设置电子邮件通知,请按照以下步骤操作: 1)单击作业名称(如果存在) 2)单击“配置” 3)然后查找“后构建操作” 4)在“邮件通知”下指定电子邮件地址。 5)保存更改。

enter image description here


3
在本地级别上,发件人地址不是重点,而是收件人地址。我猜在作业级别上配置发件人的电子邮件地址而不编写自定义脚本来发送电子邮件是不可能的。 - insider
这并没有回答问题。 - Danijel
在将我的电子邮件添加到Jenkins位置部分后,它对我有效。非常感谢。 - Mohammad Ravanbakhsh

12

我不确定这是否是您想要的,但是Jenkins使您能够为通知提供完整的发件人电子邮件地址。 转到管理Jenkins,然后进入系统配置,找到名为电子邮件通知的部分。

您可以以Jenkins<foo@mycompany.com>的形式提供您的电子邮件地址。


11
截至2015年4月,路径为“管理Jenkins > 配置系统 > 系统管理员电子邮件地址”。请注意,本次翻译不包含解释或其他额外信息。 - Shirish Hirekodi

10

如果你需要在没有使用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及其网站,网站中还提供了其他有用的Groovy脚本这里


0
配置文件位于Jenkins的主目录中的jenkins.model.JenkinsLocationConfiguration.xml。
如果您使用脚本来设置您的Jenkins。

0
import javax.mail.Message.RecipientType
import javax.mail.Address
import javax.mail.internet.InternetAddress
import javax.mail.internet.MimeMessage

msg.setFrom(new InternetAddress("john...@server.com"))

2
仅提供代码的答案通常被认为是低质量的帖子。您能否提供一些解释,说明您的答案为什么有效? - Axe319

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接