python定时发送随机笑话邮件
# -*- 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, 465)
server.set_debuglevel(1)
server.ehlo(smtp_server)
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在服务器上一直运行就好了~