Posted in Python onFebruary 16, 2014
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)
python发送邮件示例(支持中文邮件标题)
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@