代码如下:
def sendmail(login={},mail={}): ”’\ @param login login[‘user’] login[‘passwd’] @param mail mail[‘to_addr’] mail[‘subject’] mail[‘content’] mail[‘attach’] ”’ from datetime import datetime from base64 import b64encode import smtplib, mimetypes from email.mime.text import mimetext from email.mime.multipart import mimemultipart from email.mime.image import mimeimage
user_info = login[‘user’].split(‘@’) mail_configure = {} mail_configure[‘mail_encoding’] = ‘utf-8’ mail_configure[‘mail_supplier’] = user_info[1] mail_configure[‘from_addr’] = login[‘user’] mail_configure[‘server_host’] = ‘smtp.%s’ % mail_configure[‘mail_supplier’] error = none
try: email = mimemultipart() email[‘from’] = mail_configure[‘from_addr’] email[‘to’] = mail[‘to_addr’] email[‘subject’] = ‘=?%s?b?%s?=’ % (mail_configure[‘mail_encoding’],b64encode(mail[‘subject’])) email_content = mimetext(mail[‘content’], _charset=mail_configure[‘mail_encoding’]) email.attach(email_content)
if ‘attach’ in mail: for i in mail[‘attach’]: ctype, encoding = mimetypes.guess_type(i) if ctype is none or not encoding is none: ctype = ‘application/octet-stream’ maintype, subtype = ctype.split(‘/’, 1) att = mimeimage((lambda f: (f.read(), f.close()))(open(i, ‘rb’))[0], _subtype = subtype) att.add_header(‘content-disposition’, ‘attachment’, filename = i) email.attach(att)
smtp = smtplib.smtp() smtp.connect(mail_configure[‘server_host’]) smtp.login(user_info[0], login[‘passwd’]) smtp.sendmail(mail_configure[‘from_addr’], mail[‘to_addr’], email.as_string()) smtp.quit() except exception as e: error = e
return (mail_configure[‘from_addr’], mail[‘to_addr’], error)
测试
代码如下:
def t21(): login = { ‘user’:’ak43@sina.com’, ‘passwd’:’hello@d’ } mail = { ‘to_addr’:’ak32@sina.com;ak32@21cn.com’, ‘subject’:’不带附件的测试邮件’, ‘content’:”’\ sz002718,友邦吊顶 sz002719,麦趣尔 sz002722,金轮股份 ”’, } print sendmail(login, mail)
login = { ‘user’:’hellot@sina.com’, ‘passwd’:’hello#world’ } mail = { ‘to_addr’:’tom12@sina.com;tom12@21cn.com’, ‘subject’:’带附件的测试邮件’, ‘content’:”’\ sz002718,友邦吊顶 sz002719,麦趣尔 sz002722,金轮股份 ”’, ‘attach’:[‘e:/a/a.txt’] } print sendmail(login, mail)