定时任务与发送邮件

网上不少关于发送邮件的代码都是没有用的,我用的是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)
复制代码
相关文章
相关标签/搜索