Python自动化必备发送邮件报告脚本详解
#!/usr/bin/python3
# -*- coding:UTF-8 -*-
import smtplib
#smtplib库主要用来连接第三方smtp库,用来发邮件
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
#email库主要用来定义邮件的格式,发送人,接收人,邮件标题,邮件正文 smtp_server = 'smtp.163.com'
smtp_user = '185xxxxx@163.com'
smtp_pwd = 'xxxxxxx'
#user和pwd是用来连接smtp.163.com,不是邮箱的密码。需要在邮箱里设置一下。
sender = smtp_user
#发送人
receivers = ["xxxxxx", "xxxxxxx"]
#接收邮件的邮箱列表 msg = MIMEMultipart()
#创建MIMEMultipart()实例,用于构建附件 msg['From'] = Header('张xx<18519xxxxx>', 'utf-8')
subject = 'Python final Mail'
msg['Subject'] = Header(subject, 'utf-8')
#创建邮件的发送人和主题 with open('mail.html', 'r', encoding='UTF-8') as fp:
mail_msg = fp.read()
msg.attach(MIMEText(mail_msg, 'html', 'utf-8'))
#读取mail.html文件,发送html文本 att1 = MIMEText(open('mail1.txt', 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename="mail1.txt"'
msg.attach(att1)
#创建附件1 att2 = MIMEText(open('runoob.txt', 'rb').read(), 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
att2["Content-Disposition"] = 'attachment; filename="runoob.txt"'
msg.attach(att2)
#创建附件2 sm = smtplib.SMTP()
sm.connect(smtp_server, 25)
sm.login(smtp_user, smtp_pwd)
#连接smtp服务器,并登陆 try:
for rec in receivers:
msg['To'] = rec
sm.sendmail(sender, rec, msg.as_string())
#发送邮件
print("Send mail to {0} succeed".format(rec))
except smtplib.SMTPException:
print("Send mail to {0} fail".format(rec))
sm.quit()
#关闭连接
Python自动化必备发送邮件报告脚本详解的更多相关文章
- Python中%r和%s的详解及区别_python_脚本之家
Python中%r和%s的详解及区别_python_脚本之家 https://www.jb51.net/article/108589.htm
- python+requests接口自动化测试框架实例详解
python+requests接口自动化测试框架实例详解 转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...
- 自动化运维工具——ansile详解
自动化运维工具——ansible详解(一) 目录 ansible 简介 ansible 是什么? ansible 特点 ansible 架构图 ansible 任务执行 ansible 任务执行模式 ...
- Python爬虫之selenium库使用详解
Python爬虫之selenium库使用详解 本章内容如下: 什么是Selenium selenium基本使用 声明浏览器对象 访问页面 查找元素 多个元素查找 元素交互操作 交互动作 执行JavaS ...
- python中的subprocess.Popen()使用详解---以及注意的问题(死锁)
从python2.4版本开始,可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值. subprocess意在替代其他几个老的模块或者函数 ...
- Python学习一:序列基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7858473.html 邮箱:moyi@moyib ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- python 3.x 爬虫基础---Urllib详解
python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 前言 爬虫也了解了一段时间了希望在半个月的时间内 ...
- python中argparse模块用法实例详解
python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...
随机推荐
- JS获取当前日期方法
Date.prototype.format = function (format) { var args = { "M+": this.getMonth() + 1, " ...
- Spring Boot入门第一天:Hello, Spring Boot!
原文链接 1. 新建一个Maven Web项目. 2. 配置pom.xml文件. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...
- Maven报错Please ensure you are using JDK 1.4 or above and not a JRE解决方法!
https://www.cnblogs.com/shihua513/p/6163682.html 在eclipse下用maven编译时,很有可能出现以下错误: Please ensure you ar ...
- dynamic遇上ADO.NET
传说中的dynamic dynamic是个不合群.不按规则办事的家伙,可以说是个异形,但更恐怖的是它又是无所不知的,任何事情都难不了它(咳咳,它似乎与Lambda表达式是死对头).这令人想起<死 ...
- 教你一招 - 如何安装nopcommerce2.5
教你一招 - 如何安装nopcommerce2.5 29. 五月 2012 16:22 / wcf / 教你一招 . 解决方案 ...
- C#方式操作Cookie
1.设置cookie public static void SetCookie(string TokenValue) { HttpCookie tokencookie = new HttpCookie ...
- Django ModelForm 组件的应用
ModelForm组件的应用 ModelForm 组件的创建: 1.创建一个类,该类继承 forms.ModelForm 2.大致组成部分 class ModelNameModelForm(form ...
- hammer.js方法总结(只做了一个简单的demo)
html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- stock 基本操作
追涨停 量比 大于5 0%-2% 个股 2点卖 37分钟买 板块5 -8 只涨停 板块分向标 追踪短期个股的涨跌现象 明白市场大级别趋势 主 ...
- 先天性肾上腺增生症(ACH)
先天性肾上腺增生症 类型 症状 并发症 治疗 情感支持 产前筛查 预防 什么是先天性肾上腺皮质增生症? 先天性肾上腺增生症(CAH)是一组影响肾上腺的遗传性疾病.肾上腺产生激素皮质醇和醛固酮.CAH是 ...