Hi folks, thanks for you replies :)

@shanz just fugred it out tonight, was just a bit late to let you
know.

@Didier your approach won't work as the env variables you are pointing
to are somewhat static. You can't modiefy them from within a job at
build time.
This would require 3 stages. Manipulate the config.xml (?) of Jenkins
with regular expressions, reload the configuration and run the job or
do it manually. Not nice approach. I am using this in one test
scenario which will be implemented that way but I am not fancy about
it.

I did find an option "Set environment variables through a file" - I
suppose this is from a plugin. That would work for me to as there is
an upstream job running which could create the file. But why handle
around with environments, regular expressions to escape special
characters if the script provided by Shanz also can stream the content
of the already existing and updated template? ;)

I will implement it in all release build jobs
The script looks now like this and is for me a perfect solution :)

import smtplib
import os
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders

files=[]
to=["m...@elektrobit.com","some...@elektrobit.com"]
cc=["distribution_list"]
subject = "new XXXXXX integrations available"
text = open('delivery_mail_all.txt','r')

# Send the email via our own SMTP server.
def send_mail(to, subject, text, fromWho="m...@elektrobit.com",
files=[], cc=[], bcc=[], server="192.0.0.1"):
    assert type(to)==list
    assert type(files)==list
    assert type(cc)==list
    assert type(bcc)==list

    message = MIMEMultipart()
    message['From'] = fromWho
    message['To'] = COMMASPACE.join(to)
    message['Date'] = formatdate(localtime=True)
    message['Subject'] = subject
    message['Cc'] = COMMASPACE.join(cc)

    message.attach(MIMEText(text.read()))

    for f in files:
        part = MIMEBase('application', 'octet-stream')
        part.set_payload(open(f, 'rb').read())
        Encoders.encode_base64(part)
        part.add_header('Content-Disposition', 'attachment;
filename="%s"' % os.path.basename(f))
        message.attach(part)

    addresses = []
    for x in to:
        addresses.append(x)
    for x in cc:
        addresses.append(x)
    for x in bcc:
        addresses.append(x)

    smtp = smtplib.SMTP(server)
    smtp.sendmail(fromWho, addresses, message.as_string())
    smtp.close()

send_mail(to, subject, text, "EB Software Integration", files)

Only thing I haven't figured out yet is if someone wants to reply. The
name displayed is EB Software Integration as I have hardcoded it in
the send_mail call so the fromWho variable isn't used.
But I would like that EB Software Integration is resolved to fromWho.
I have been researching some approaches which didn't work (probably
due to my lacking skills in python).
This is actually not really giving me head aches at the moment. The
necessary function is available and people can get in touch with me as
my signature is in that mail. This minor glitch can be solved at a
more convenient time :)

Take care
Jan

On 20 Mrz., 11:37, shanz <duncan.perr...@gmail.com> wrote:
> Oh yes, you need to define subject up near the top of the script and
> change the final call to send_mail().
> Eg:
> import smtplib
> import os
> from email.MIMEMultipart import MIMEMultipart
> from email.MIMEBase import MIMEBase
> from email.MIMEText import MIMEText
> from email.Utils import COMMASPACE, formatdate
> from email import Encoders
>
> myRelease = os.environ.get("BUILD_STRING")
> files=["myData.xml","myDataNightly_Previous.xml","myDataRelease_Previous.xml",
> "myReport.html"]
> to=["an.ema...@address.com","an.ema...@address.com","an.ema...@address.com"]
> text1 = "To everyone\n\nmyData.xml has changed following the latest
> build :- "
> text2 = myRelease
> text3 = "\r\n\nSee attached files\r\n\r\nReleases are in\"\\\\netdrive
> \Product source code\Tagged\", \r\n\nNightly files are in \"\\\
> \netdrive\Product source code\Nightly\"\r\n\nRegards,\r\n\nJenkins\r
> \n"
> text = text1+text2+text3
> subject="myNewEmailSubject"
>
> # Send the email via our own SMTP server.
> def send_mail(to, subject, text, fromWho="", files=[], cc=[], bcc=[],
>
> etc etc
>
> send_mail(to, subject, text, "jenkins", files)

Reply via email to