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使用reportlab画图示例(含中文汉字)
Dec 03 Python
python操作gmail实例
Jan 14 Python
Python编程之属性和方法实例详解
May 19 Python
Python实现简单多线程任务队列
Feb 27 Python
浅析Python 中整型对象存储的位置
May 16 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
python去除文件中重复的行实例
Jun 29 Python
python os.listdir按文件存取时间顺序列出目录的实例
Oct 21 Python
Python多版本开发环境管理工具介绍
Jul 03 Python
Pytorch反向求导更新网络参数的方法
Aug 17 Python
Python爬虫工具requests-html使用解析
Apr 29 Python
python使用glob检索文件的操作
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测试程序运行时间的类
2012/02/05 PHP
PHP 微信支付类 demo
2015/11/30 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
2015/12/24 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
降低PHP Redis内存占用
2017/03/23 PHP
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
JS清除字符串中重复值的实现方法
2016/08/03 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
python计算最大优先级队列实例
2013/12/18 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
Python遍历numpy数组的实例
2018/04/04 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
Python中的延迟绑定原理详解
2019/10/11 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
运动会入场口号
2014/06/07 职场文书
英语专业求职信
2014/07/08 职场文书
小学运动会演讲稿
2014/08/25 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书