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创建和使用字典实例详解
Nov 01 Python
使用IPython来操作Docker容器的入门指引
Apr 08 Python
python实现支持目录FTP上传下载文件的方法
Jun 03 Python
python删除列表内容
Aug 04 Python
Python中for循环和while循环的基本使用方法
Aug 21 Python
Django学习教程之静态文件的调用详解
May 08 Python
基于anaconda下强大的conda命令介绍
Jun 11 Python
python读取文本绘制动态速度曲线
Jun 21 Python
python 文件转成16进制数组的实例
Jul 09 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
Tensorflow 卷积的梯度反向传播过程
Feb 10 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中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
php中stdClass的用法分析
2015/02/27 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
jquery实现每个数字上都带进度条的幻灯片
2013/02/20 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
python的正则表达式re模块的常用方法
2013/03/09 Python
python list语法学习(带例子)
2013/11/01 Python
Python学习小技巧之列表项的推导式与过滤操作
2017/05/20 Python
python高级特性和高阶函数及使用详解
2018/10/17 Python
python处理大日志文件
2019/07/23 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
python递归函数用法详解
2020/10/26 Python
英国剑桥包中文官网:The Cambridge Satchel Company中国
2018/11/06 全球购物
德国家具折扣店:POCO
2020/02/28 全球购物
现代化办公人员工作的自我评价
2013/10/16 职场文书
化工专业自荐书
2014/06/16 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
2015年幼儿教师个人工作总结
2015/05/20 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书
Go语言编译原理之源码调试
2022/08/05 Golang