How can I set the Sender's address in Jenkins?

EmailSmtpJenkinsSender

Email Problem Overview


I'm sending mail from Jenkins to an anonymous SMTP relay internally. That relay then securely sends mail to exchange online via TLS on port 587. The transport works perfectly, the issue is that Microsoft requires the Sender address match the authentication credentials login name which is the same as the account email address. For example sake, say this is [email protected]. How can I make jenkins always send mail from [email protected]?

BTW when I say the transport works perfectly what I mean specifically is that I can drop a formatted e-mail file into the "Pickup" directory on the SMTP relay server and it is properly sent to any recipient provided the From address is [email protected].

Email Solutions


Solution 1 - Email

Jenkins uses the System Admin e-mail address as the sender address for e-mail notification. You can configure this under Manage Jenkins -> Configure System. This is under the Jenkins Location header on that page! It is not immediately obvious that this setting is tied to the e-mail notification settings, since it is not under the E-mail notification header on the configuration page.

Solution 2 - Email

Manage Jenkins -> Configure System -> Jenkins Location -> System Admin e-mail address

You can search the page for "Jenkins Location" to change the default value of address not configured yet to whatever you want.

Solution 3 - Email

There are two places to add the "E-Mail Notificaitons"

  1. Global level
  2. Local level (Jenkins job level)

To set the E-Mail Notification at Global Level, follow below steps -

  1. Go to Manage Jenkins
  2. Configure System
  3. Jenkins Location
  4. System Admin e-mail address

enter image description here

To set the E-Mail Notification at local level (per Jenkins job level), follow below steps -

  1. Click on the Job name (if existing one)
  2. click on the "Configure"
  3. Then look for the "Post-build Action"
  4. Specify the email address under "E-mail Notification".
  5. Save the changes.

enter image description here

Solution 4 - Email

I'm not sure if it is what you meant, but Jenkins enables you to provide a full Sender E-mail Address for notifications. Go to Manage jenkins, then System configuration and find section called E-mail Notification.

You can provide you email address in a form of Jenkins <[email protected]>.

Solution 5 - Email

If you need to do this without using the jenkins UI (for instance in automating a jenkins setup) - you can do so with a groovy script.

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()

Do note: I did not write this script (although I have tested it and it works), all credit to Peter Halliday and his website with other helpful groovy scripts here.

Solution 6 - Email

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]"))

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCTOMarcView Question on Stackoverflow
Solution 1 - EmailFrisoView Answer on Stackoverflow
Solution 2 - EmailAnshu PrateekView Answer on Stackoverflow
Solution 3 - EmailSanjeet PandeyView Answer on Stackoverflow
Solution 4 - EmailŁukasz RżanekView Answer on Stackoverflow
Solution 5 - EmailjdfView Answer on Stackoverflow
Solution 6 - EmailDaniyalView Answer on Stackoverflow