Source code for spike.util.sendgmail
#!/usr/bin/env python
# encoding: utf-8
#!/usr/bin/python
'''
Sending informations about result etc with Gmail
recipient (to) and attached document (attach) can be a list
'''
from __future__ import print_function
import smtplib
import os
import sys
if sys.version_info[0] < 3:
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders
else:
from email import encoders as Encoders
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
gmail_user = "gmalert67@gmail.com"
gmail_pwd = "IGBMCAlert67"
[docs]def add_to_msg(msg, f):
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))
msg.attach(part)
return msg
[docs]def mail(to, subject, text= "", attach= None):
# print "text ",text
# print "attach ", attach
msg = MIMEMultipart()
msg['From'] = gmail_user
if type(to) != list: #
msg['To'] = to
else: # list of mails
msg['To'] = ", ".join(to)
msg['Subject'] = subject
if text!='' :
msg.attach(MIMEText(text))
if attach is not None :
#get all the attachments
if type(attach) == list: # file exists, it is probably a list of files
for f in attach:
msg = add_to_msg(msg, f)
else:
msg = add_to_msg(msg, attach)
mailServer = smtplib.SMTP("smtp.gmail.com", 587)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login(gmail_user, gmail_pwd)
mailServer.sendmail(gmail_user, to, msg.as_string())
# Should be mailServer.quit(), but that crashes...
mailServer.close()
if __name__ == '__main__': # Example
mail("lionel.chiron@gmail.com","Hello from python!","This is a email sent with python","/Users/chiron/Pictures/kotok.jpg")