python发送邮件示例(支持中文邮件标题)


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 相关文章推荐
Python中使用copy模块实现列表(list)拷贝
Apr 14 Python
在Django的模型和公用函数中使用惰性翻译对象
Jul 27 Python
python中zip()方法应用实例分析
Apr 16 Python
一张图带我们入门Python基础教程
Feb 05 Python
python书籍信息爬虫实例
Mar 19 Python
Windows下python3.7安装教程
Jul 31 Python
详解Django解决ajax跨域访问问题
Aug 24 Python
对python以16进制打印字节数组的方法详解
Jan 24 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
Python使用psutil获取进程信息的例子
Dec 17 Python
在python3中使用shuffle函数要注意的地方
Feb 28 Python
python map比for循环快在哪
Sep 21 Python
python定时器使用示例分享
Feb 16 #Python
python求素数示例分享
Feb 16 #Python
python检测服务器是否正常
Feb 16 #Python
java直接调用python脚本的例子
Feb 16 #Python
python根据距离和时长计算配速示例
Feb 16 #Python
python根据经纬度计算距离示例
Feb 16 #Python
python转换摩斯密码示例
Feb 16 #Python
You might like
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
php 读取文件夹下所有图片、文件的实例
2018/10/17 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
JavaScript实现全选取消效果
2017/12/14 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
深入理解Python中的*重复运算符
2017/10/28 Python
Python 快速实现CLI 应用程序的脚手架
2017/12/05 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
Python socket模块方法实现详解
2019/11/05 Python
Python matplotlib可视化实例解析
2020/06/01 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
门卫岗位职责
2013/11/15 职场文书
计算机专业学生的自我评价
2013/12/15 职场文书
电子技术专业中专生的自我评价
2013/12/17 职场文书
国培远程培训感言
2014/03/08 职场文书
学生安全责任书
2014/04/15 职场文书
社会实践活动总结报告
2014/04/29 职场文书
市级优秀班主任事迹材料
2014/05/13 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
学习群众路线的心得体会
2014/11/05 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
讲文明倡议书
2015/04/29 职场文书