📌  相关文章
📜  mail.send_message 烧瓶不工作,SSL ==> 465 - Python (1)

📅  最后修改于: 2023-12-03 15:02:50.838000             🧑  作者: Mango

mail.send_message 烧瓶不工作,SSL ==> 465 - Python

问题描述

在使用 Python 中的 mail.send_message 函数来发送邮件时,如果要使用 SMTP SSL 的端口 465,烧瓶(Flask)框架下的邮件功能会失效。

问题原因

烧瓶框架下的 mail.send_message 函数仅支持常规的 SMTP 端口(25 或 587),而不支持 SMTP SSL 端口(465)。这是因为烧瓶的邮件功能实现是通过基于标准的 SMTP 服务器实现的,而不是基于 SSL 的 SMTP 调用。

解决方案

要在烧瓶框架下使用 SMTP SSL 端口,可以使用 Python 的标准库 smtplib 来实现。下面是代码示例:

import smtplib
from email.message import EmailMessage

msg = EmailMessage()
msg.set_content("内容")
msg['Subject'] = "主题"
msg['From'] = "发送者"
msg['To'] = "接收者"

with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
    smtp.login('发件人邮箱', '授权码')
    smtp.send_message(msg)

通过使用 smtplib.SMTP_SSL 来连接 SSL 端口,并使用标准的 EmailMessage 类来构造邮件内容和地址。同时也需要注意的是,使用 SSL 端口时需要配置发件人邮箱和授权码。

总结

在烧瓶框架下使用 SMTP SSL 的端口 465 发送邮件时,需要使用 Python 的标准库 smtplib 来实现,同时需要注意配置好发件人邮箱和授权码。