python定时发送随机笑话邮件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Tony5t4rk/article/details/82015245

文章地址:http://henuly.top/?p=808

# -*- coding:utf-8 -*-

import smtplib, schedule, time
import json, urllib
from email import encoders
from email.header import Header
from email.utils import parseaddr, formataddr
from email.mime.text import MIMEText
from urllib import request, parse

# 邮件发送参数
from_address = '*********@qq.com'
authorization_password = '****************'
smtp_server = 'smtp.qq.com'
to_address = '*********@qq.com'

# 通过聚合数据随机获取一个笑话
def rand_joke():
    appkey = '********************************'
    url = 'http://v.juhe.cn/joke/randJoke.php'
    params = {
        'key': appkey,
    }
    params = parse.urlencode(params)
    f = request.urlopen('%s?%s' % (url, params))

    content = f.read()
    res = json.loads(content.decode('utf-8'))
    return res['result'][0]['content']

# 格式化邮件地址
def _format_address(str):
    name, address = parseaddr(str)
    return formataddr((Header(name, 'utf-8').encode(), address))

# 设定邮件内容
def make_email():
    msg = MIMEText(rand_joke() + '\n——Liu Yang(***)', 'plain', 'utf-8')
    msg['From'] = _format_address('***~ <%s>' % from_address)
    msg['To'] = _format_address('***~ <%s>' % to_address)
    msg['Subject'] = Header('***~','utf-8').encode()
    return msg

# 发送邮件
def send_email():
    server = smtplib.SMTP(smtp_server, 25)
    server.set_debuglevel(1)
    server.ehlo()
    server.starttls()
    server.login(from_address, authorization_password)
    server.sendmail(from_address, [to_address], make_email().as_string())
    server.quit()

# 定时任务
schedule.every().day.at('17:09').do(send_email)
schedule.every().hour.do(send_email)

def main():
    while True:
        schedule.run_pending()

if __name__ == '__main__':
    main()

写好后用supervisor在服务器上一直运行就好了~

猜你喜欢

转载自blog.csdn.net/Tony5t4rk/article/details/82015245
今日推荐