网上不少关于发送邮件的代码都是没有用的,我用的是126邮箱,会致使报错554,不少人说这是由于被标记为垃圾邮件,然而当你改标题改内容后发现……然并卵! 先说一下,此次个人脚本是要定时去爬一个网页,看是否有内容更新!html
def movie_2045():
tree = tl.getHtmlTrees('http://www.zhuixinfan.com/viewtvplay-977.html',False,'get')
tr_list = tree.xpath('//*[@id="ajax_tbody"]/tr')
if len(tr_list)>2:
#发送邮件
send_email()
复制代码
tool和setting是我本身写的工具类和配置类ajax
from tools import Tools as tl
from tools import Settings as st
import schedule
import time
import smtplib
from email.mime.text import MIMEText
from email.header import Header
sender = '个人发送邮箱'
receivers = '个人接收邮箱' # 接收邮件,可设置为你的QQ邮箱或者其余邮箱
mail_host="smtp.126.com" #设置服务器
mail_user="个人发送邮箱" #用户名
mail_pass="" #密码
def send_email():
# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('咒报2405 我死的理由有更新,连接:http://www.zhuixinfan.com/viewtvplay-977.html', 'plain', 'utf-8')
message['From'] = sender # 发送者
message['To'] = receivers # 接收者
#标题
subject = u'有更新'
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP_SSL(mail_host,465)
# smtpObj.set_debuglevel(1)
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
smtpObj.quit()
print("邮件发送成功")
except smtplib.SMTPException as e:
print("Error: 没法发送邮件")
print(e)
复制代码
最后定时任务我用的是schedule,而不是celerybash
schedule.every(5).seconds.do(movie_2045)
if __name__ == '__main__':
while True:
schedule.run_pending()
time.sleep(1)
复制代码