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 web程序
Sep 11 Python
Python 提取dict转换为xml/json/table并输出的实现代码
Aug 28 Python
Python单体模式的几种常见实现方法详解
Jul 28 Python
python实现汉诺塔算法
Mar 01 Python
python 使用 requests 模块发送http请求 的方法
Dec 09 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
pytest中文文档之编写断言
Sep 12 Python
python scipy卷积运算的实现方法
Sep 16 Python
python画图常规设置方式
Mar 05 Python
Python学习之路安装pycharm的教程详解
Jun 17 Python
Python如何批量生成和调用变量
Nov 21 Python
解决jupyter notebook图片显示模糊和保存清晰图片的操作
Apr 24 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
用PHP制作静态网站的模板框架(一)
2006/10/09 PHP
php数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
PHP session 会话处理函数
2016/06/06 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
2014/09/01 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
Bootstrap学习笔记之css样式设计(2)
2016/06/07 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
简单学习5种处理Vue.js异常的方法
2019/06/17 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
django model去掉unique_together报错的解决方案
2016/10/18 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
Python常用断言函数实例汇总
2020/11/30 Python
中文系学生自荐信范文
2013/11/13 职场文书
车间班组长的职责
2013/12/13 职场文书
代理商会议邀请函
2014/01/27 职场文书
网上快餐厅创业计划书
2014/02/01 职场文书
暑期实践个人总结
2015/03/06 职场文书
贷款收入证明范本
2015/06/12 职场文书
欠条样本
2015/07/03 职场文书
人生感悟经典句子
2019/08/20 职场文书
javascript的var与let,const之间的区别详解
2022/02/18 Javascript