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语言技巧之三元运算符使用介绍
Mar 04 Python
Python实现扫描局域网活动ip(扫描在线电脑)
Apr 28 Python
Python实现ssh批量登录并执行命令
Oct 25 Python
python树莓派红外反射传感器
Jan 21 Python
Python with用法:自动关闭文件进程
Jul 10 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
Aug 12 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
利用Python脚本批量生成SQL语句
Mar 04 Python
Pycharm最常用的快捷键及使用技巧
Mar 05 Python
opencv 图像加法与图像融合的实现代码
Jul 08 Python
教你如何使用Python实现二叉树结构及三种遍历
Jun 18 Python
关于Python OS模块常用文件/目录函数详解
Jul 01 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版本号
2006/10/09 PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
js模拟点击事件实现代码
2012/11/06 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
jQuery 获取页面li数组并删除不在数组中的key
2016/08/02 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
小程序云开发实战小结
2018/10/25 Javascript
layui框架与SSM前后台交互的方法
2019/09/12 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
JS快速实现简单计算器
2020/04/08 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
python的格式化输出(format,%)实例详解
2018/06/01 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
浅谈Pycharm中的Python Console与Terminal
2019/01/17 Python
python虚拟环境完美部署教程
2019/08/06 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
毕业自我评价
2014/02/05 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
实习证明格式范文
2014/10/14 职场文书
安阳殷墟导游词
2015/02/10 职场文书
自主招生自荐信范文
2015/03/04 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
二胎满月酒致辞
2015/07/29 职场文书
高中团支书竞选稿
2015/11/21 职场文书