相关参数

"""
可选参数
text 邮件正文内容(文本)
html 邮件附件内容(HTML)
image_path 邮件附件内容(图片路径)
att_path 邮件附件内容(文件路径)
"""
text = "Hi!你好啊!!\nHow are you?\nHere is the link you wanted:\nhttp://www.baidu.com"
html = """
<html>  <head></head>  <body>  <p>Hi!<br>  How are you?<br>  Here is the <a href="http://www.baidu.com">link</a> you wanted.<br> </p> </body>
</html>
"""
image_path = "F:\爬虫\IMGS\image1.jpg"
att_path = r'F:\Python开发工程师测试题(一).docx'"""
必要参数
username  邮箱登陆账号
password  邮箱密码
subject   邮件主题
server    邮件服务器
sender    发送方
receiver  收件人(列表格式,多个收件人)
"""
username = "xxxx9.com"
password = 'xxxx
subject = '测试邮件'
server = 'smtp.139.com'
sender = 'xxx@139.com'
receiver = ['xxx@qq.com']

一:脚本的配置类

import smtplib, time, os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.base import MIMEBase
from email import encodersclass Settings():#脚本配置类def __init__(self, username, password, subject, server, sender, receiver):self.server = serverself.sender = senderself.receiver = receiverself.username = usernameself.password = passwordself.subject = subject

二:构造邮件MIMEMultipart对象

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Message():# 构造邮件对象MIMEMultipart对象_msg = MIMEMultipart('mixed')def __init__(self, set, content):# 下面的主题,发件人,收件人,日期是显示在邮件页面上的。self._msg['Subject'] = set.subjectself._msg['From'] = set.username# 收件人为多个收件人,通过join将列表转换为以;为间隔的字符串self._msg['To'] = ";".join(set.receiver)self._msg['Date'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))self.content = contentdef get_msg(self):for info in self.content.get_content():if not info: continueself._msg.attach(info)return self._msg

三:构造邮件正文及附件内容

class EmailContent():def __init__(self, text=None, html=None, image_path=None, att_path=None):self.text = textself.image = image_pathself.html = htmlself.att_path = att_pathdef get_filename(self, path):import osreturn os.path.basename(path)@propertydef get_text(self):# 构造文本if not self.text:return Noneself.text_plain = MIMEText(self.text, 'plain', 'utf-8')return self.text_plain@propertydef get_image(self):# 构造图片链接if not self.image:return Noneif not os.path.exists(self.image):raise FileNotFoundError("Not Find This File")filename = self.get_filename(self.image)self.sendimagefile = open(r'%s' % self.image, 'rb').read()self.image = MIMEImage(self.sendimagefile)self.image.add_header('Content-Disposition', 'attachment', filename=('gbk', '', filename))return self.image@propertydef get_html(self):# 构造htmlif not self.html:return Noneself.text_html = MIMEText(self.html, 'html', 'utf-8')self.text_html["Content-Disposition"] = 'attachment; filename="TEXT/HTML.html"'return self.text_html@propertydef get_att(self):"# 构造附件"if not self.att_path:return Noneif not os.path.exists(self.att_path):raise FileNotFoundError("Not Find This File")filename = self.get_filename(self.att_path)self.att = MIMEBase('application', 'octet-stream')self.att.set_payload(open(self.att_path, 'rb').read())self.att.add_header('Content-Disposition', 'attachment', filename=('gbk', '', filename))encoders.encode_base64(self.att)return self.attdef get_content(self):

四:邮件发送服务类

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Smtp():_smtp = smtplib.SMTP()def __init__(self, set, msg):self.set = setself.msg = msgdef _connect(self):self._smtp.connect(self.set.server)def _login(self):self._smtp.login(self.set.username, self.set.password)def _sendmail(self):self._smtp.sendmail(self.set.sender, self.set.receiver, self.msg.as_string())def _quit(self):self._smtp.quit()def start(self):self._connect()self._login()self._sendmail()self._quit()

五:主程序

if __name__ == '__main__':set = Settings(username, password, subject, server, sender, receiver)content = EmailContent(text=text, image_path=image_path, att_path=att_path, html=html)message = Message(set, content)msg = message.get_msg()smtp = Smtp(set, msg)smtp.start()

利用Python编辑一个发送邮件的脚本相关推荐

  1. python制作阴阳师脚本_利用python制作一个阴阳师小游戏

    利用python制作一个阴阳师小游戏 发布时间:2020-11-27 13:59:49 来源:亿速云 阅读:84 这期内容当中小编将会给大家带来有关利用python制作一个阴阳师小游戏,文章内容丰富且 ...

  2. python扫雷脚本_利用 Python 实现 自动扫雷 小脚本

    原标题:利用 Python 实现 自动扫雷 小脚本 自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式.一.准备工作1.扫雷游戏 我是 ...

  3. java调python 监控_利用Python实现一个简单的系统监控图表

    作为运维人员,想必大家肯定都做过这样的事情:为了监控系统资源使用情况,开了若干个窗口,来回切换看输出: 只要我切得够快,性能异常点就逃不过我的眼睛! 这个时候你要是有个监控工具自然是很好的,例如我们美 ...

  4. python自己做个定时器_技术图文:如何利用 Python 做一个简单的定时器类?

    原标题:技术图文:如何利用 Python 做一个简单的定时器类? 背景 今天在B站上看有关 Python 最火的一个教学视频 -- "零基础入门学习 Python",这也是我们 P ...

  5. python推荐_利用Python构建一个简单的推荐系统

    原标题:利用Python构建一个简单的推荐系统 摘要:快利用python构建一个属于你自己的推荐系统吧,手把手教学,够简单够酷炫.在此之前读者需要对pandas和numpy等数据分析包有所了解. 什么 ...

  6. python抽奖游戏_利用Python写一个抽奖程序,解密游戏内抽奖的秘密

    原标题:利用Python写一个抽奖程序,解密游戏内抽奖的秘密 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 极客 ...

  7. python推箱子小游戏_小伙利用Python自制一个推箱子小游戏!

    原标题:小伙利用Python自制一个推箱子小游戏! 导语 月初更波python制作小游戏系列吧用python写了个推箱子小游戏,在这里分享给大家,让我们愉快地开始吧 小伙利用Python自制一个推箱子 ...

  8. python数据预测_利用Python编写一个数据预测工具

    利用Python编写一个数据预测工具 发布时间:2020-11-07 17:12:20 来源:亿速云 阅读:96 这篇文章运用简单易懂的例子给大家介绍利用Python编写一个数据预测工具,内容非常详细 ...

  9. python推荐系统-利用python构建一个简单的推荐系统

    摘要: 快利用python构建一个属于你自己的推荐系统吧,手把手教学,够简单够酷炫. 本文将利用python构建一个简单的推荐系统,在此之前读者需要对pandas和numpy等数据分析包有所了解. 什 ...

最新文章

  1. f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10)) //该句搭框架,确定输出1行x2列的图象,图片尺寸为20x10英寸
  2. strcpy会覆盖原来的吗_幽默你真的会了吗?原来可以这么简单
  3. Scrapy介绍及入门
  4. vue js 工具方法封装js 文件
  5. python适用的操作系统是_操作系统先来先服务python
  6. java 抽象类_什么是final?Java抽象类又是什么?抽象类能使用 final 修饰吗?
  7. insert时调用本身字段_python3调用企业微信api!开发一款属于自己的企业微信
  8. 网上图书商城项目学习笔记-008修改密码功能
  9. Vue入门之animate过渡动画效果
  10. IOS控件圆角、描边
  11. UCF101和HMDB51数据集的处理 for Human Action Recognition
  12. Echarts美国地图
  13. Win11如何调整鼠标dpi?Win11调整鼠标dpi的方法
  14. vc如何引入lib库
  15. 计算机系统漏洞及防范,计算机系统漏洞以及防范的措施.doc
  16. 认知升级是比其他一切技能都更为重要的思维模式转变
  17. python学习(七)----time模块相关函数
  18. 我最爱用的一款 Redis 可视化管理工具——Another Redis Desktop Manager
  19. 【WPS】WPS的JS宏脚本编写总结
  20. Green Plum 备份恢复集成方案

热门文章

  1. java中截取字符串的方式
  2. 12864液晶——读写、划点、划线、汉字、32*16的字符
  3. java 取得日期_java-如何从某个日期获取日期列表?
  4. 自由自在讲述小资与冰淇淋的美丽生活
  5. 【学习笔记】HTTPS概述
  6. 【转:SAP学习篇】Fiori 的开发工具
  7. 【MM模块】Batch 批次管理1
  8. SAP 修改物料价格那些事
  9. 解析BW:数据源提取数据的原理
  10. 跟人聊天的总结:为什么选择SAP