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中的函数用法入门教程
Sep 02 Python
Python中使用urllib2模块编写爬虫的简单上手示例
Jan 20 Python
Python中交换两个元素的实现方法
Jun 29 Python
使用Django2快速开发Web项目的详细步骤
Jan 06 Python
python 计算两个列表的相关系数的实现
Aug 29 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
python正则表达式实例代码
Mar 03 Python
Python+Appium实现自动化测试的使用步骤
Mar 24 Python
jupyter notebook 的工作空间设置操作
Apr 20 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
详解selenium + chromedriver 被反爬的解决方法
Oct 28 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 和 XML: 使用expat函数(二)
2006/10/09 PHP
php统计文件大小,以GB、MB、KB、B输出
2011/05/29 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
php简单构造json多维数组的方法示例
2017/06/08 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
js+CSS实现弹出居中背景半透明div层的方法
2015/02/26 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
Vue原理剖析 实现双向绑定MVVM
2017/05/03 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
2019/05/29 Python
python实现人脸签到系统
2020/04/13 Python
pytorch中index_select()的用法详解
2021/01/06 Python
信息管理与信息系统专业求职信
2014/06/21 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
求职自我评价怎么写
2015/03/09 职场文书
催款函范本大全
2015/06/24 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
德生BCL3000抢先使用感受和评价
2022/04/07 无线电
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL