可以发送html文本的python脚本

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 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,搭建一个在线教育视频课程分享网站。
相关文章
|
4天前
|
存储 Shell 区块链
怎么把Python脚本打包成可执行程序?
该文档介绍了如何将Python脚本及其运行环境打包成EXE可执行文件,以便在不具备Python环境的计算机上运行。首先确保Python脚本能够正常运行,然后通过安装PyInstaller并使用`--onefile`参数将脚本打包成独立的EXE文件。此外,还提供了去除命令行窗口和指定可执行文件图标的详细方法。这些步骤帮助用户轻松地将Python程序分发给最终用户。
怎么把Python脚本打包成可执行程序?
|
4天前
|
存储 Java 开发者
python脚本实现原理
【9月更文挑战第4天】python脚本实现原理
16 5
|
1天前
|
运维 监控 API
自动化运维:使用Python脚本进行日常管理
【9月更文挑战第6天】在现代的IT环境中,自动化运维已成为提升效率、减少人为错误的关键。本文将介绍如何通过Python脚本简化日常的运维任务,包括批量配置管理和日志分析。我们将从基础语法讲起,逐步深入到脚本的实际应用,旨在为读者提供一套完整的解决方案,以实现运维工作的自动化和优化。
8 1
|
4天前
|
Python
在Python中,文本查找和替换的常用操作
在Python中,文本查找和替换的常用操作,使用字符串方法进行查找和替换,使用正则表达式进行查找和替换,对所查找到的内容进行计数。
11 1
|
5天前
|
运维 Linux 测试技术
自动化运维:使用Python脚本简化日常任务
【8月更文挑战第34天】在快节奏的IT环境中,自动化运维成为提升效率、降低错误率的关键。本文以Python脚本为例,展示如何通过编写简单的脚本来自动化日常运维任务,如批量更改文件权限、自动备份数据等。文章不仅提供代码示例,还探讨了自动化运维带来的益处和实施时应注意的问题。
|
6天前
|
运维 监控 网络安全
自动化运维:使用Python脚本简化日常任务
【8月更文挑战第33天】在本文中,我们将深入探讨如何通过Python脚本来自动化执行常见的运维任务。从基础的服务器健康检查到复杂的部署流程,Python因其简洁和功能强大的特性,成为自动化工具的首选。文章将展示编写Python脚本的基本方法,并通过实际示例演示如何应用于真实场景,旨在帮助读者提升效率,减少重复性工作。
|
5天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【8月更文挑战第34天】在数字化时代,高效运维成为企业竞争力的关键。本篇文章将引导你通过Python脚本实现自动化运维,从而提升工作效率和减少人为错误。我们将从简单的文件备份脚本开始,逐步深入到系统监控和自动报告生成,让你的日常工作更加轻松。
|
7天前
|
运维 监控 搜索推荐
自动化运维之宝典:Python脚本实现日常任务管理
在IT运维的日常工作中,重复性任务的自动化处理不仅能提高效率,还能减少人为错误。本文将介绍如何用Python编写简单脚本来自动化常见的运维任务,比如备份文件、监控系统资源和自动更新软件包。我们将一步步构建这些脚本,确保它们易于理解和扩展,最终目标是让读者能够自行定制脚本以适应自己的运维需求。 【8月更文挑战第31天】
|
8天前
|
运维 监控 数据可视化
自动化运维:使用Python脚本进行日志分析
【8月更文挑战第31天】当系统出现问题时,我们通常会查看日志寻找线索。然而,手动阅读大量日志既费时又易出错。本文将介绍如何使用Python脚本自动分析日志,快速定位问题,提高运维效率。我们将从简单的日志读取开始,逐步深入到复杂的正则表达式匹配和错误统计,最后实现一个自动化的日志监控系统。无论你是新手还是老手,这篇文章都将为你提供有价值的参考。让我们一起探索如何用代码解放双手,让运维工作变得更加轻松吧!
|
8天前
|
运维 监控 Python
自动化运维:使用Python脚本实现系统监控
【8月更文挑战第31天】 在现代IT运维管理中,自动化已成为提高效率和准确性的关键。本文将通过一个Python脚本示例,展示如何实现对服务器的自动监控,包括CPU使用率、内存占用以及磁盘空间的实时监测。这不仅帮助运维人员快速定位问题,也减轻了日常监控工作的负担。文章以通俗易懂的语言,逐步引导读者理解并实践自动化监控的设置过程。