可以发送html文本的python脚本

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储OSS,敏感数据保护2.0 200GB 1年
对象存储 OSS,内容安全 1000 次 1年
简介:

获取阿里云和金山云云存储的方法在前两章文章里面已经有说过,那么现在就可以搭配一个邮件脚本,然后每天定时发送了。


假设我们的这个发送邮件脚本叫sendmail.py,由于我们这个邮件脚本是包含整个的html文件,所以我们这个sendmail.py需要获得阿里云OSS脚本的结果,然后把这个脚本结果传递给html。


整个脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#Author:ChrisChan@2017-09-27
#这个脚本用于获取阿里云和金山云云存储的值,并发送邮件,python版本必须是2.7+
 
import  os,time,re,smtplib,logging
from  email.mime.text  import  MIMEText
from  email.header  import  Header
from  aliyunsdkcore  import  client
from  aliyunsdkcms.request.v20170301  import  QueryMetricListRequest
import  getalioss     #这个是获取阿里云oss的脚本,叫getalioss.py
from  getalioss  import  getlists
 
oss_today_capacity,oss_yesterday_capacity,oss_diff  =  getlists()
 
color  =  'green'  if  oss_diff[ 0 ] <  '0'  else  'red'
color1  =  'green'  if  oss_diff[ 1 ] <  '0'  else  'red'
color2  =  'green'  if  oss_diff[ 2 ] <  '0'  else  'red'
color3  =  'green'  if  oss_diff[ 3 ] <  '0'  else  'red'
color4  =  'green'  if  oss_diff[ 4 ] <  '0'  else  'red'
color5  =  'green'  if  oss_diff[ 5 ] <  '0'  else  'red'
 
def  send_mail(to_list, cc_list, html, sub):
     me  =  mail_user
     msg  =  MIMEText(html, _subtype = 'html' , _charset = 'utf-8' )   # 格式化邮件内容为html,编码为utf-8
     msg[ 'Subject' =  sub     # 邮件主题
     msg[ 'From' =  me     # 发件人
     msg[ 'To' =  ";" .join(to_list)   # 收件人,将列表转换为字符串
     msg[ 'Cc' =  ";" .join(cc_list)   # 抄送人,将列表转换为字符串
     try :
         send_smtp  =  smtplib.SMTP()     # 实例化
         send_smtp.connect(mail_host)     # 连接smtp服务器
         send_smtp.login(mail_user, mail_pass)     # 使用定义的账号密码进行登录
         send_smtp.sendmail(me, to_list + cc_list, msg.as_string())     # 发送邮件
         send_smtp.close()     # 关闭连接
         return  True
     except  Exception, e:
         # logging.debug(e)
         print  ( "ERROR!!!!" )
         return  False
 
if  __name__  = =  '__main__' :
     mail_host  =  'mail.dahuatech.com'     #这里填写发信的服务器地址
     mail_user  =  'dh_software007@dahuatech.com'     #这里填写发信人
     mail_pass  =  '发送邮件的密码'
     mailto_list  =  [ 'chenx1242@163.com' ]     #这里填写收信人
     mailcc_list  =  [ '124208739@qq.com' , 'chen_shuo@dahuatech.com' ]     #这里是抄送
     html  =  """
                 <table color="CCCC33" width="800" border="1" cellspacing="0" cellpadding="5" text-align="center">
                         <tr>
                                 <B><td text-align="center">云厂家</td></B>
                                 <B><td text-align="center">Bucket名称</td></B>
                                 <B><td text-align="center">保存内容</td></B>
                                 <B><td text-align="center">今日容量大小</td></B>
                                 <B><td text-align="center">昨日容量大小</td></B>
                                 <B><td text-align="center">两日容量差</td></B>
                         </tr>   
                         <tr>   
                                 <td text-align="center" rowspan="3">阿里云杭州一区</td>
                                 <td text-align="center">lechangecloud</td>
                                 <td text-align="center">云录像(含录像封面)、报警图片、全景图片
合成(原始+合成后图片)</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center" style="color: %s">%s GB</td>
                         </tr>
                         <tr>   
                                 <td text-align="center">lechangecloud-public</td>
                                 <td text-align="center">录像分享文件</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center" style="color: %s">%s GB</td>
                         </tr>
                         <tr>   
                                 <td text-align="center">lechangehls</td>
                                 <td text-align="center">视频直播文件</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center" style="color: %s">%s GB</td>
                         </tr>
                         <tr>   
                                 <td text-align="center" rowspan="2">阿里云深圳一区</td>
                                 <td text-align="center">online-sz-private</td>
                                 <td text-align="center">云录像(含录像封面)、报警图片、全景图片
合成(原始+合成后图片)</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center" style="color: %s">%s GB</td>
                         </tr>
                         <tr>   
                                 <td text-align="center">online-sz-public</td>
                                 <td text-align="center">录像分享文件</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center" style="color: %s">%s GB</td>
                         </tr>
                         <tr>   
                                 <td text-align="center">阿里云杭州二区</td>
                                 <td text-align="center">录像分享文件</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center" style="color: %s">%s GB</td>
                         </tr>
                         <tr>
                                 <td text-align="center" rowspan="3">金山云</td>
                                 <td text-align="center">js-online-private</td>
                                 <td text-align="center">云录像(含录像封面)</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center">%s GB</td>
                         </tr>
                         <tr>   
                                 <td text-align="center">js-online-public</td>
                                 <td text-align="center">录像分享文件</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center">%s GB</td>
                         </tr>
                         <tr>   
                                 <td text-align="center">js-online-hls</td>
                                 <td text-align="center">视频直播文件</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center">%s GB</td>
                                 <td text-align="center">%s GB</td>
                         </tr>
                         <tr>
                                 <td test-align="center" colspan="6">注意事项 1:阿里云的云存储延>迟大约2~3小时,金山云的云存储延迟为一天;<br />
注意事项 3:此邮件是系统自动发出,如果有任何疑问请找陈硕;
                         </tr>
                 </table>"""  %  (oss_today_capacity[ 0 ],oss_yesterday_capacity[ 0 ],color,oss_diff[ 0 ],oss_today_capacity[ 1 ],oss_yesterday_capacity[ 1 ],color1,oss_diff[ 1 ],oss_today_capacity[ 2 ],oss_yesterday_capacity[ 2 ],color2,oss_diff[ 2 ],oss_today_capacity[ 3 ],oss_yesterday_capacity[ 3 ],color3,oss_diff[ 3 ],oss_today_capacity[ 4 ],oss_yesterday_capacity[ 4 ],color4,oss_diff[ 4 ],oss_today_capacity[ 5 ],oss_yesterday_capacity[ 5 ],color5,oss_diff[ 5 ], '9.27' , '9.26' , '0.01' , '381.71' , '381.71' , '0.0' , '14.9' , '14.9' , '0.0' )     #这里对应上面%s
     sub  =  "乐橙云存储资源空间情况每日汇报表"     #这里是标题
     if  send_mail(mailto_list, mailcc_list, html, sub):
         logging.debug( "Send mail succed!" )
     else :
         logging.debug( "Send mail failed" )


这里我金山云没有用脚本获取值,而是手动输入一些值作例子,整个脚本效果如下:

461c02dbd695d4d2672effb97e0eff2a.png

可以看到,在“差值”那一栏,正数是红色,负数是绿色。


新的知识点!

1)上面那个脚本涉及到了B.py获取A.py的变量的问题,在这里我举个例子方便理解: 

假设A.py是这样的:

1
2
3
4
5
6
7
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
=  1
=  "lebron james"
=  "Yao Ming"
def  f():
     return  "function"

B.py需要得到A.py的变量和函数,那么B.py可以这么写:

1
2
3
4
5
6
7
8
9
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import  A     #如果A.py跟B.py不在一个文件夹下,这里需要写绝对路径
=  a.a
print  (a)
from  import  b,c,f
print (b)
print  (b) + (c)
f()


执行一下B.py,看一下效果:

wKiom1nN63nDEl6iAABdB8mJ0h0217.png

2)接着上面的例子说,最好是A.py生成一个结果,然后传给B,而不是把生成结果的事交给B去办,因为变量太复杂(比如涉及到for in 循环),那么在from import那步就很容易出错,所以说“模块化中的单元是类、函数和常量,而不是变量”。


比如A.py中涉及了一个for in循环,那么可以将得到的lists写进一个函数getlists()里,然后在B.py里写 lists=getlists()。



最后的最后,如果您觉得本文对您升职加薪有帮助,那么请不吝赞助之手,刷一下下面的二维码,赞助本人继续写更多的博文!

wKioL1l16m3BMYDKAACPHEqd55Q687.jpg



 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1969705


相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
8天前
|
数据采集 运维 API
把Postman调试脚本秒变Python采集代码的三大技巧
本文介绍了如何借助 Postman 调试工具快速生成 Python 爬虫代码,并结合爬虫代理实现高效数据采集。文章通过“跨界混搭”结构,先讲解 Postman 的 API 调试功能,再映射到 Python 爬虫技术,重点分享三大技巧:利用 Postman 生成请求骨架、通过 Session 管理 Cookie 和 User-Agent,以及集成代理 IP 提升稳定性。以票务信息采集为例,展示完整实现流程,探讨其在抗封锁、团队协作等方面的价值,帮助开发者快速构建生产级爬虫代码。
把Postman调试脚本秒变Python采集代码的三大技巧
|
1月前
|
前端开发 JavaScript API
Webview+Python:用HTML打造跨平台桌面应用的创新方案
本文系统介绍了使用PyWebView库结合HTML/CSS/JavaScript开发跨平台桌面应用的方法。相比传统方案(如PyQt、Tkinter),PyWebView具备开发效率高、界面美观、资源占用低等优势。文章从技术原理、环境搭建、核心功能实现到性能优化与实战案例全面展开,涵盖窗口管理、双向通信、系统集成等功能,并通过“智能文件管理器”案例展示实际应用。适合希望快速构建跨平台桌面应用的Python开发者参考学习。
109 1
|
1月前
|
数据采集 数据可视化 大数据
Python入门修炼:开启你在大数据世界的第一个脚本
Python入门修炼:开启你在大数据世界的第一个脚本
80 6
|
2月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
5月前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
441 61
自动化微信朋友圈:Python脚本实现自动发布动态
|
6月前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
2月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
本文来自YashanDB官网,介绍如何处理Oracle客户端sql*plus中使用@@调用同级目录SQL脚本的场景。崖山数据库23.2.x.100已支持@@用法,但旧版本可通过Python脚本批量重写SQL文件,将@@替换为绝对路径。文章通过Oracle示例展示了具体用法,并提供Python脚本实现自动化处理,最后调整批处理脚本以适配YashanDB运行环境。
|
2月前
|
SQL 关系型数据库 数据库连接
|
4月前
|
安全 Linux 网络安全
利用Python脚本自动备份网络设备配置
通过本文的介绍,我们了解了如何利用Python脚本自动备份网络设备配置。该脚本使用 `paramiko`库通过SSH连接到设备,获取并保存配置文件。通过定时任务调度,可以实现定期自动备份,确保网络设备配置的安全和可用。希望这些内容能够帮助你在实际工作中实现网络设备的自动化备份。
135 14
|
5月前
|
数据采集 存储 监控
21个Python脚本自动执行日常任务(2)
21个Python脚本自动执行日常任务(2)
21个Python脚本自动执行日常任务(2)