ChatGPT解决这个技术问题 Extra ChatGPT

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

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 foo@mycompany.com. How can I make jenkins always send mail from foo@mycompany.com?

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 foo@mycompany.com.

Does anyone know how to do this without using the UI? Maybe through the CLI or a groovy script or even a jenkins job?
Answered my own question about changing the admin email address without the UI below.

F
Friso

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.


Using Ubuntu 12.04, local exim4 and Jenkins 1.565.1, installed from the external repo, I had to set this in order to make mail delivery work.
If I could give you 500 up votes, I would have!!! Fantastic, solved my problem in a shot
A
Anshu Prateek

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.


Manage Jenkins -> Configure System -> Jenkins Location -> System Admin e-mail address right on the point, tnx
When notifications are sent on job fail, is this the "from" address?
S
Sanjeet Pandey

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

Global level 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

https://i.stack.imgur.com/1GH7x.png

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.

https://i.stack.imgur.com/yVnEe.png


On the local level it's not sender's address but recipient's. I guess it's not possible to configure sender's email address on a job level without writing custom scripts to send email.
This doesn't answer the question.
It works for me after add my email to Jenkins location section. Many thanks.
Ł
Łukasz Rżanek

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 <foo@mycompany.com>.


As of Apr 2015 it is, Manage Jenkins > Configure System > System Admin e-mail address
m
mkobit

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.


D
David Buck
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"))

Code only answers are generally considered low quality posts. Can you please provide some explanation as to why your answer works?

关注公众号,不定期副业成功案例分享
Follow WeChat

Success story sharing

Want to stay one step ahead of the latest teleworks?

Subscribe Now