
需求背景分析
设想我们想要设计一个定时任务,例如每天定时使用Python来检测服务是否正常运行,但又不希望每天都需要登录到系统后台查看服务状态。我们可以采用Python的TP模块进行任务结果广播,通过申请一个公共邮箱,每次Python执行完定时的测试任务后,都调用TP接口将测试结果发送到指定邮箱。这样,我们就能在移动端实时监测系统的状态。
QQ邮箱的TP服务配置流程详解
我们需要通过浏览器登录QQ邮箱。在邮箱的设置-账户页面中,找到POP3/TP服务并开启。开启后,系统会生成一个长度为16的随机口令,这个口令将用于第三方登录代替密码。接着,配置TP服务器地址和端口号。
使用授权码登录TP并发送邮件的步骤
这里我们直接展示完成代码,部分隐私信息已做处理:
python
smtp_test.py
!/usr/bin/python
— coding: UTF-8 —
import smtplib
from email.mime.text import MIMEText
from email.header import Header
第三方 TP 服务配置
mail_host = “smtp.” 设置服务器地址
mail_user = “” 填入用户名
mail_pass = “your_authorization_code” 填入授权码
sender = ”
receivers = [”] 邮件接收方,可以是自己的QQ邮箱或其他邮箱
message = MIMEText(‘Python TP 邮件发送测试…’, ‘plain’, ‘utf-8’)
message[‘From’] = Header(“TP发件人”, ‘utf-8’)
message[‘To’] = Header(“收件人”, ‘utf-8’)
subject = ‘Python TP 邮件测试’
message[‘Subject’] = Header(subject, ‘utf-8’)
try:
smtpObj = smtplib.TP()
smtpObj.connect(mail_host, 25) TP端口号为25
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print(“邮件发送成功”)
except smtplib.TPException:
import traceback
traceback.print_exc()
print(“无法发送邮件”)
请注意,这里的服务器配置为QQ邮箱的TP服务器smtp.,端口号为25。读者需要将脚本中的帐号和授权码替换为自己的。程序的正常输出应该是:“邮件发送成功”。由于使用了traceback进行错误日志采集,即使出现错误,程序也能继续运行,但会广播错误日志。
