I found that a python script gave me more flexibility in what I could
attach to an email...
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=["[email protected]","[email protected]","[email protected]"]
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
# Send the email via our own SMTP server.
def send_mail(to, subject, text, fromWho="", files=[], cc=[], bcc=[],
server="10.192.00.000"):
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))
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, "myData.xml", text, "jenkins", files)