the5fire的技术博客

关注python、vim、linux、web开发和互联网--life is short, we need python.


python发送邮件源码

作者:the5fire | 标签:   | 发布:2012-10-27 11:29 p.m. | 阅读量: 3976, 3934
这是之前一个公司的面试题中的一小部分。比较习惯把这中工具性的东西单独的写成一个函数,这样以后再用到,直接拿来就好。

这段代码的作用就是发送邮件可以添加附件,且可以是html样式的邮件。具体看代码吧

import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart

def send_mail(to, sub, content, from_email, mail_pass, filelist = []):
'''
to:发给谁
sub:主题
content:内容
from_email:登录邮箱
mail_pass:登录密码
filelist:附件列表,文件路径
send_mail("aaa@126.com","the5fire","welcome to the5fire.com","xxxx@xxx.com","xxxxxx")
'''

mail_postfix = from_email.split('@')[1]
mail_host="smtp.%s" % (mail_postfix,)
mail_user= from_email.split('@')[0]

me=mail_user+"<"+mail_user+"@"+mail_postfix+">"

msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = sub.encode('gbk')
msgRoot['Form'] = me
msgRoot['To'] = to
msgRoot.preamble = 'this is a multi-part message IN MIME format'

msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)

msgText = MIMEText(content, 'html','gbk')
msgAlternative.attach(msgText)
for onefile in filelist:
att = MIMEText(open(onefile,'rb').read(),'base64','gb2312')
att["Content-Type"] = 'application/octet-stream'
att["Content-Disposition"] = 'attachment;filename=%s' % onefile
msgAlternative.attach(att)

message = msgRoot.as_string()
try:
s = smtplib.SMTP()
try:
s.connect(mail_host)
except Exception,e:
print str(e)
s.starttls()
s.login(mail_user,mail_pass)
s.sendmail(me, to, message)
s.close()
return True
except Exception, e:
print str(e)
return False

----EOF-----

扫码关注,或者搜索微信公众号:码农悟凡


其他分类: