用python代码发送qq邮件时,采用了以下服务器设置,结果报错:
server = smtplib.SMTP_SSL('smtp.qq.com', 587)
报错信息为:
ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1129)
问题出在发送服务器代码“587”上,按照QQ邮箱对应指南,应为“465”:
server = smtplib.SMTP_SSL('smtp.qq.com', 465)
更正后出现新的报错,
smtplib.SMTPAuthenticationError: (535, b'Login Fail. Please enter your authorization code to login...
这里提示的是登录邮箱失败,并解释说:(利用代码登录QQ邮箱时,)应输入“授权码”(authorization code)(而不是常规邮箱密码)。问题即出在以下这行代码的“mail_password”:
server.login(from_address, mail_password)
至于“授权码”,在“QQ邮箱-设置-账户-POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”下,可以看到一贴生成QQ邮箱登录授权码的“温馨提示”,详见:
用“授权码”替换前述“mail_password”后,邮件即发送成功了。
2022.11.07