Python发送邮件

jopen 10年前

使用Python发送邮件的demo,可以带附件。

#!/usr/bin/env python  # -*- coding: utf-8 -*-  # Author: guojing  # Date: 2014-10-23  # Purpose: 发送邮件     '''  发送邮件  Parameters:主题、接受者(多个用','分割)、抄送(多个用','分割)、内容(可以是文件)、附件(多个用','分割)  '''     __author__ = 'guojing'     import email,sys,os  import smtplib  from email.MIMEText import MIMEText  from email.MIMEMultipart import MIMEMultipart  from email.MIMEImage import MIMEImage     SENDER = 'username@****.com'  SMTPSERVER = 'smtpcloud.sohu.com'  #RECEIVERS = ''  USERNAME = 'username@****.com'  APIKEY = '******'     def sendMail(subject, receivers, cc, content, atts):      msg = MIMEMultipart('related')      msg['Subject'] = unicode(subject, "UTF-8")      msg['From'] = SENDER      msg['To'] = receivers      msg['Cc'] = cc         #邮件内容      if os.path.isfile(content):          if(content.split('.')[-1]=='html'):              cont = MIMEText(open(content).read(),'html','utf-8')          else:              cont = MIMEText(open(content).read(),'plain','utf-8')      else:          cont = MIMEText(content, 'plain','utf-8')      msg.attach(cont)         #构造附件      if atts != -1 and atts != '':          for att in atts.split(','):              os.path.isfile(att)              name = os.path.basename(att)              att = MIMEText(open(att).read(), 'base64', 'utf-8')              att["Content-Type"] = 'application/octet-stream'              #将编码方式为utf-8的name,转码为unicode,然后再转成gbk(否则,附件带中文名的话会出现乱码)              att["Content-Disposition"] = 'attachment; filename=%s' % name.decode('utf-8').encode('gbk')              msg.attach(att)         smtp = smtplib.SMTP()      smtp.connect(SMTPSERVER)      smtp.login(USERNAME, APIKEY)      for recev in receivers.split(','):          smtp.sendmail(SENDER,recev, msg.as_string())      for c in cc.split(','):          smtp.sendmail(SENDER,c, msg.as_string())      smtp.quit()     def main():      print "start send mail[sendmail.py]"      subject = sys.argv[1]      receivers = sys.argv[2]      #cc = sys.argv[3]      leng = len(sys.argv)      if leng == 3:          cc = ""          content = ""          atts = -1      elif leng == 4:          print "The parameters is not currect!"          sys.exit(0)      elif leng == 5:          cc = sys.argv[3]          content = sys.argv[4]          atts = -1      elif leng == 6:          cc = sys.argv[3]          content = sys.argv[4]          atts = sys.argv[5]      sendMail(subject, receivers, cc, content, atts)      print "finish send mail[sendmail.py]"     if __name__=='__main__':      main()
参考:
http://blog.csdn.net/betry/article/details/6657429

来自:http://my.oschina.net/u/553773/blog/349327