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在命令行下使用google翻译(带语音)
Jan 16 Python
Python Pandas找到缺失值的位置方法
Apr 12 Python
python实现二维数组的对角线遍历
Mar 02 Python
python中aioysql(异步操作MySQL)的方法
Apr 11 Python
Flask模板引擎之Jinja2语法介绍
Jun 26 Python
Python facenet进行人脸识别测试过程解析
Aug 16 Python
python+requests接口压力测试500次,查看响应时间的实例
Apr 30 Python
python用opencv完成图像分割并进行目标物的提取
May 25 Python
python中的测试框架
Nov 13 Python
python tkinter模块的简单使用
Apr 07 Python
django上传文件的三种方式
Apr 29 Python
python在package下继续嵌套一个package
Apr 14 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
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
2006/12/06 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
php循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
php简单统计在线人数的方法
2016/05/10 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
2020/04/06 PHP
JS中style属性
2006/10/11 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
python一键升级所有pip package的方法
2017/01/16 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
酒店实习个人鉴定
2013/12/07 职场文书
教师求职信范文分享
2013/12/27 职场文书
英文导游欢迎词
2014/01/11 职场文书
2014社区三八妇女节活动方案
2014/03/30 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
兵马俑的导游词
2015/02/02 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
灵魂歌王观后感
2015/06/17 职场文书
初婚初育证明范本
2015/06/18 职场文书