网上很多关于发送邮件的代码都是没有用的,我用的是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 tlfrom tools import Settings as stimport scheduleimport timeimport smtplibfrom email.mime.text import MIMETextfrom email.header import Headersender = '我的发送邮箱'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)复制代码