请注意,本文编写于 2086 天前,最后修改于 1808 天前,其中某些信息可能已经过时。
小白写的请大佬指点
请自行安装所需模块
自行修改smtp信息
只在Windows python3.7下测试
# -*- coding: utf-8 -*-
import requests
import os
from bs4 import BeautifulSoup
import re
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
url='http://typecho.org/download'
headers = {'user-agent':'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
#获取版本
res=requests.get(url, headers).text
soup = BeautifulSoup(res, 'html.parser')
tags = soup.find('div',{'class':'post-content fmt'})
a = tags.find('a',attrs={"href":re.compile(r'^https:')})
link = 'GitHub地址:' + a.get('href')
text = '版本号:' + a.get_text()
url1 = a.get('href')
#更新时间
resp = requests.get(url=url1, headers=headers).text
soup1 = BeautifulSoup(resp,'html.parser')
#div = soup1.find('div',{'class':'flex-self-start no-wrap'})
div = soup1.find('relative-time')
time = '更新时间:' + div.get_text()
#print(text)
fp = open("test.txt",'r') #创建文件
txt = fp.read()
#判断版本
if txt == a.get_text():
fp.close()
print("未更新")
else:
fp = open("test.txt",'w')
fp.write(str(a.get_text()))
fp.close()
print("有新版")
#smtp发信
my_sender='1111@529i.com' # 发件人邮箱账号
my_pass = 'sssssja' # 发件人邮箱密码(当时申请smtp给的口令)
my_user='1111@qq.com' # 收件人邮箱账号,我这边发送给自己
ret=True
try:
msg=MIMEText('<p>' + (time) + '</p>' + '<p>' + (text) + '</p>' + '<p>' + (link) + '</p>','html','utf-8')
msg['From']=formataddr(["发件人昵称",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To']=formataddr(["收件人昵称",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject']="typecho升级提醒" # 邮件的主题,也可以说是标题
server=smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是465
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit()# 关闭连接
except Exception:# 如果 try 中的语句没有执行,则会执行下面的 ret=False
ret=False
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")