昨天开始QQ的邮件服务器好像不是很稳定,经常断开连接,导致各种通知和告警邮件都发送不出来,花了10分钟加一个备用邮件服务器。代码如下:
setting.py, 20行左右的位置,新增4个.bak的配置。
"email.server": "smtp.qq.com",
"email.port": 465,
"email.username": "",
"email.password": "",
"email.server.bak": "smtp.163.com",
"email.port.bak": 465,
"email.username.bak": "",
"email.password.bak": "",
"email.sender": "",
"email.receiver": "",
修改vnpy/engine.py, EmailEngine类的run方法,位置差不多在文件的最后面了。
def run(self) -> None:
""""""
while self.active:
try:
msg: EmailMessage = self.queue.get(block=True, timeout=1)
try:
with smtplib.SMTP_SSL(
SETTINGS["email.server"], SETTINGS["email.port"], timeout=10
) as smtp:
smtp.login(
SETTINGS["email.username"], SETTINGS["email.password"]
)
smtp.send_message(msg)
except:
logger.error("邮件服务器错误,使用备用服务器")
if SETTINGS.get("email.server.bak", None):
with smtplib.SMTP_SSL(
SETTINGS["email.server.bak"], SETTINGS["email.port.bak"], timeout=10
) as smtp:
smtp.login(
SETTINGS["email.username.bak"], SETTINGS["email.password.bak"]
)
smtp.send_message(msg)
except Empty:
pass