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 25 Python
Python实现竖排打印传单手机号码易撕条
Mar 16 Python
Python中的FTP通信模块ftplib的用法整理
Jul 08 Python
浅谈Python中的可变对象和不可变对象
Jul 07 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
Jul 22 Python
python里使用正则的findall函数的实例详解
Oct 19 Python
利用信号如何监控Django模型对象字段值的变化详解
Nov 27 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
May 10 Python
python 从csv读数据到mysql的实例
Jun 21 Python
查看python安装路径及pip安装的包列表及路径
Apr 03 Python
对python 调用类属性的方法详解
Jul 02 Python
基于Django实现日志记录报错信息
Dec 17 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执行批量mysql语句的解决方法
2013/05/02 PHP
探讨PHP删除文件夹的三种方法
2013/06/09 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
PHP学习笔记(一) 简单了解PHP
2014/08/04 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
获取中文字符串的实际长度代码
2014/06/05 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
NodeJS的Promise的用法解析
2016/05/05 NodeJs
浅谈JS中json数据的处理
2016/06/30 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
jquery.pager.js实现分页效果
2019/07/29 jQuery
vue微信分享插件使用方法详解
2020/02/18 Javascript
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
Python学习入门之区块链详解
2017/07/25 Python
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
Python+OpenCV目标跟踪实现基本的运动检测
2018/07/10 Python
python3人脸识别的两种方法
2019/04/25 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
个人违纪检讨书
2014/09/15 职场文书
重阳节标语大全
2014/10/07 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
Django显示可视化图表的实践
2021/05/10 Python