【问题标题】:How can I set the Sender's address in Jenkins?如何在 Jenkins 中设置发件人的地址?
【发布时间】:2012-03-30 09:56:30
【问题描述】:

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

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

【问题讨论】:

  • 有谁知道如何在不使用 UI 的情况下做到这一点?也许通过 CLI 或 groovy 脚本,甚至是 jenkins 工作?
  • 回答了我自己关于在没有下面 UI 的情况下更改管理员电子邮件地址的问题。

标签: email smtp jenkins sender


【解决方案1】:

我不确定这是否是您的意思,但 Jenkins 使您能够为通知提供完整的发件人电子邮件地址。转到Manage jenkins,然后System configuration 并找到名为E-mail Notification 的部分。

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

【讨论】:

  • 截至 2015 年 4 月,管理 Jenkins > 配置系统 > 系统管理员电子邮件地址
【解决方案2】:

Jenkins 使用 系统管理员电子邮件地址 作为电子邮件通知的发件人地址。您可以在 Manage Jenkins -> Configure System 下进行配置。这是该页面上的 Jenkins Location 标题下!此设置是否与电子邮件通知设置相关并不立即显而易见,因为它不在配置页面上的 电子邮件通知 标题下。

【讨论】:

  • 使用从外部存储库安装的 Ubuntu 12.04、本地 exim4 和 Jenkins 1.565.1,我必须设置它才能使邮件传递工作。
【解决方案3】:

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

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

【讨论】:

  • 管理 Jenkins -> 配置系统 -> Jenkins 位置 -> 系统管理员电子邮件地址,tnx
  • 发送作业失败通知时,这是“发件人”地址吗?
【解决方案4】:

如果您需要在不使用 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 脚本here

【讨论】:

    【解决方案5】:

    有两个地方可以添加“E-Mail Notificaitons”

    1. 全球层面
    2. 本地级别(Jenkins 工作级别)

    要在全球级别设置电子邮件通知,请按照以下步骤操作 - 1)去管理詹金斯 2) 配置系统 3) 詹金斯位置 4) 系统管理员邮箱

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

    【讨论】:

    • 在本地级别不是发件人的地址,而是收件人的地址。我想如果不编写自定义脚本来发送电子邮件,就不可能在工作级别配置发件人的电子邮件地址。
    • 这不能回答问题。
    【解决方案6】:
    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"))
    

    【讨论】:

    • 只有代码的答案通常被认为是低质量的帖子。您能否解释一下您的答案为何有效?
    猜你喜欢
    • 2011-01-14
    • 1970-01-01
    • 2017-05-11
    • 2023-03-26
    • 2013-06-19
    • 2010-11-20
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多