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中不同进制互相转换(二进制、八进制、十进制和十六进制)
Apr 05 Python
整理Python中的赋值运算符
May 13 Python
Django admin实现图书管理系统菜鸟级教程完整实例
Dec 12 Python
python 剪切移动文件的实现代码
Aug 02 Python
Selenium控制浏览器常见操作示例
Aug 13 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
python requests爬取高德地图数据的实例
Nov 10 Python
python实现文本界面网络聊天室
Dec 12 Python
使用selenium模拟登录解决滑块验证问题的实现
May 10 Python
Numpy之reshape()使用详解
Dec 26 Python
Python hashlib常见摘要算法详解
Jan 13 Python
Python类及获取对象属性方法解析
Jun 15 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/06/13 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
PDO::prepare讲解
2019/01/29 PHP
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
js实现的折叠导航示例
2013/11/29 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
2016/06/21 Javascript
EsLint入门学习教程
2017/02/17 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
vue filters的使用详解
2018/06/11 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
Vue实现计算器计算效果
2020/08/17 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
python对DICOM图像的读取方法详解
2017/07/17 Python
Python中偏函数用法示例
2018/06/07 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
python如何随机生成高强度密码
2020/08/19 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
HTML5样式控制示例代码
2013/11/27 HTML / CSS
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
父亲的菜园教学反思
2014/02/13 职场文书
我爱我校演讲稿
2014/05/21 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
培训师岗位职责
2015/02/14 职场文书
谢师宴家长致辞
2015/07/27 职场文书
2016年寒假家长评语
2015/10/10 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL
idea下配置tomcat避坑详解
2022/04/12 Servers