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中requests模块的使用方法
Apr 08 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
Jun 17 Python
Python基础中所出现的异常报错总结
Nov 19 Python
Python探索之创建二叉树
Oct 25 Python
详解Python3注释知识点
Feb 19 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
Python搭建代理IP池实现检测IP的方法
Oct 27 Python
Python+OpenCV图像处理——实现轮廓发现
Oct 23 Python
python中re模块知识点总结
Jan 17 Python
python re模块常见用法例举
Mar 01 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 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
很让人受教的 提高php代码质量36计
2012/09/05 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
2019/11/12 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
bootstrap实现tab选项卡切换
2020/08/09 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
Python 字典dict使用介绍
2014/11/30 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
微信跳一跳python代码实现
2018/01/05 Python
用python3 urllib破解有道翻译反爬虫机制详解
2019/08/14 Python
python实现按首字母分类查找功能
2019/10/31 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
校优秀毕业生主要事迹
2014/05/26 职场文书
荆州古城导游词
2015/02/06 职场文书
新员工辞职信范文
2015/05/12 职场文书
对学校的意见和建议
2015/06/04 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript