python发送邮件
来源:互联网 发布:网络教育统考平台 编辑:程序博客网 时间:2024/06/16 05:58
说明:python虽然有smtplib包,但发送邮件时自己要写的代码还是有点多,无法做到拿到即用,所以封装一下。
MailTool:邮件工具类,实例化后可直接调用其方法
send():发送邮件,可处理附件,发送给多人等
#!/usr/bin/env python# coding=utf-8"""Author: DENGQINGYONGTime: 17/2/10 11:05 Desc: 发送邮件示例代码""" import smtplibfrom email.header import Headerfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom os.path import existsclass MailTool(object): """ 用途: 邮件发送工具 参数: send_username: 发送者邮箱 send_smtp: 发送者邮箱对应的smtp服务器地址 send_password: 发送都邮箱密码 """ def __init__(self, send_username, send_smtp=None, send_password=None,): """初始化实例,需要提供发送方信息:发送smtp服务器,用户名,密码等""" self.send_smtp = send_smtp self.send_username = send_username self.send_password = send_password def send(self, receiver, subject, content, mail_format="plain", mail_charset="utf-8", attachs=None): """ 发送邮件 参数: receiver:接收人邮箱列表, subject:邮件主题, content:邮件主题, mail_format:邮件格式,取值有plain和html, mail_charset:邮件字符集, attachs:附件路径列表 """ # 转换正文类型为规范类型 if mail_format == "text": mail_format = "plain" # 处理邮件正文格式 if mail_format == "plain": print content pass elif mail_format == "html": content = "<html><body>%s</body></html>" % content print content else: print "邮件格式输入错误: %s, 应该为text或html" % mail_format return 1 msg = MIMEText(content, mail_format, mail_charset) msg["Subject"] = Header(subject, mail_charset) msg["From"] = Header(self.send_username, mail_charset) if isinstance(receiver, (list, tuple)): msg["To"] = Header(', '.join(receiver), 'utf-8') else: msg["To"] = Header(receiver, mail_charset) # 处理附件 if attachs: msg = self.attachment(msg, attachs) smtp = smtplib.SMTP() smtp.connect(self.send_smtp) smtp.login(self.send_username, self.send_password) smtp.sendmail(self.send_username, receiver, msg.as_string()) smtp.quit() def attachment(self, msg, attachs): """处理附件,将附件添加到邮件中""" msg_part = MIMEMultipart() msg_part["From"] = msg["From"] msg_part["To"] = msg["To"] msg_part["Subject"] = msg["Subject"] # print msg.get_payload(decode=True) msg_part.attach(msg) if isinstance(attachs, (list, tuple)): for attach in attachs: msg_part = self.add_attach(msg_part, attach) else: msg_part = self.add_attach(msg_part, attachs) return msg_part def add_attach(self, attobj, filename): """将单个文件添加到附件对象中""" if exists(filename): attachname = filename.split('/')[-1] if len(filename) == 0: attachname = filename.split('\\')[-1] else: raise IOError("文件不存: %s" % filename) attach = MIMEText(open(filename, "rb").read(), "base64", "utf-8") attach["Content-Type"] = "application/octet-stream" attach["Content-Disposition"] = "attachment; filename='%s'" % attachname attobj.attach(attach) return attobjif __name__=="__main__": attachs = [u'/Users/dengqingyong/Work/SN.txt', u'/Users/dengqingyong/Downloads/商户入驻申请更改.png'] receiver = ['it_xxx@qq.com', 'it_xxx@aliyun.com'] mail = MailTool("yu12377@163.com", "smtp.163.com", "password") mail.send(receiver, u'优美诗词收藏', u'多情自古空余恨,好梦右来最易醒。——清·史清《溪佚题》', 'plain', attachs=attachs)
阅读全文
0 0
- 用Python发送邮件
- Python 发送邮件
- python 邮件发送
- 使用PYTHON发送邮件
- python邮件发送
- python发送邮件程序
- python: 发送邮件
- python发送邮件
- python smtp发送邮件
- python 发送邮件实例
- python发送各类邮件
- 用Python发送邮件
- 用Python发送邮件
- python 发送邮件实例
- Python发送邮件测试
- python发送邮件
- python发送邮件
- python发送邮件
- 剑指offer——丑数(好题,思路)
- 排序算法相关的笔试面试高频题
- js控制页面的全屏展示和退出全屏显示
- python socket
- js计算时间差
- python发送邮件
- Devexpress Winfrom>Gaugecontrol>Label
- No input file specified
- tensorflow学习之路(6):tf.strided_slice()和tf.cast()的认识
- 颜色格式转换: FFmpeg源代码简单分析:libswscale的sws_getContext()
- centos 7 lvs 负载均衡搭建部署
- ip地址自动填充功能
- javaweb学习总结——Filter高级开发
- 线程Callable写法