定时任务与发送邮件

网上很多关于发送邮件的代码都是没有用的,我用的是126邮箱,会导致报错554,很多人说这是因为被标记为垃圾邮件,然而当你改标题改内容后发现……然并卵! 先说一下,这次我的脚本是要定时去爬一个网页,看是否有内容更新!

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是我自己写的工具类和配置类

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,而不是celery

schedule.every(5).seconds.do(movie_2045)

if __name__ == '__main__':     
    while True:
        schedule.run_pending()        
        time.sleep(1)
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值