yagmail
pip install yagmail
"""
yagmail发送邮件:
1、导入模块
2、使用yagmail的类创建对象(发件人、发件人授权码、发件的服务器)
3、使用yagmail对象发送邮件(指定收件人、邮件主题、发送的内容)
"""
# 导入模块
import yagmail
# 使用yagmail的类创建对象(发件人、发件人授权码、发件的服务器)
ya_obj = yagmail.SMTP(user="xxxxxxxx@qq.com", password="xxxxxxxxxxxx", host="smtp.qq.com")
# 使用yagmail对象发送邮件(指定收件人、邮件主题、发送的内容)
content = "你好!yagmail模块测试!"
# send()发送邮件
ya_obj.send("xxxxxxx@qq.com", "yagmail模块测试", content)
{}
系统资源监控-邮件告警
#!/usr/bin/python
# 解析环境配置,如果有虚拟环境使用虚拟环境路径。例: #!/python_venv_manage/python-study/bin/python
# cat yagmail_host_monitor.py
# 导入必要模块
import psutil
import datetime
import yagmail
# 定义一个函数,实现信息的显示和日志的保存
def host_monitor(time):
# 1、导入模块
# 2、定义变量保存CPU的使用率
cpu_per = psutil.cpu_percent(interval=time)
# 3、定义变量保存内存信息
memory_info = psutil.virtual_memory()
# 4、定义变量保存硬盘的信息
disk_info = psutil.disk_usage("/")
# 5、定义变量保存网络的信息
net_info = psutil.net_io_counters()
# 获取系统当前时间
current_time = datetime.datetime.now().strftime("%F %T")
# 6、拼接字符串显示
log_str = "|-------------------|------------|-------------|-------------|----------------------------|\n"
log_str += "| 监控时间 | CPU使用率 | 内存使用率 | 硬盘使用率 | 网络收发量 |\n"
log_str += "| | (共%d核CPU) | (总计%dG内存) | (总计%dG硬盘)| |\n" % (psutil.cpu_count(logical=False), memory_info.total/1024/1024/1024, disk_info.total/1024/1024/1024)
log_str += "|-------------------|------------|-------------|-------------|----------------------------|\n"
log_str += "|%s| %s%% | %s%% | %s%% | 收:%s/发:%s |\n" % (current_time, cpu_per, memory_info.percent, disk_info.percent, net_info.bytes_recv, net_info.bytes_sent)
log_str += "|-------------------|------------|-------------|-------------|----------------------------|\n"
print(log_str)
# 7、保存监控信息到日志文件
f = open("log.txt", "a", encoding="UTF-8")
f.write(log_str + "\n\n")
f.close()
# 8、发送邮件告警资源异常
# 判断资源异常时发送邮件告警
if cpu_per > 80 or memory_info.percent > 80 or disk_info.percent > 80:
# 使用yagmail的类创建对象(发件人、发件人授权码、发件的服务器)
ya_obj = yagmail.SMTP(user="xxxxxxx@qq.com", password="xxxxxxxxxxxxxxx", host="smtp.qq.com")
# 使用yagmail对象发送邮件(指定收件人、邮件主题、发送的内容)
ya_obj.send("xxxxxxx@qq.com", "系统资源监控异常告警", log_str)
# 定义一个死循环,每隔一段时间显示一次
def main():
"""程序的入口"""
while True:
host_monitor(10)
# __name__值:如果程序所有py文件被其他文件导入,些时__name__指的是些py文件本身名字,如果直接运行py文件,此时__name__值是__main__。
if __name__ == '__main__':
main()
# python yagmail_host_monitor.py
# chmod u+x yagmail_host_monitor.py; ./yagmail_host_monitor.py