You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python运行报NameError: name 'message' is not defined错误求助

报错原因排查

触发NameError: name 'message' is not defined的核心原因是:你在调用message.attach()方法前,没有提前创建并定义message变量。你贴出的代码开头直接调用了message的类方法,但没有任何初始化message的代码,Python解释器找不到对应变量就会抛出该错误。

修复方案

你的代码属于Python发送HTML格式邮件的逻辑,需要先导入依赖的邮件模块,创建MIMEMultipart实例赋值给message后,才能调用其attach方法添加附件、邮件内容。

步骤1:在现有代码开头添加初始化代码

# 导入依赖模块(如果已导入可跳过)
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import datetime

# 初始化message对象
message = MIMEMultipart()

步骤2:确认其他变量已提前定义

避免后续运行触发新的报错,需要确认以下变量你已经提前赋值:

  • mime:你第一行代码中要挂载的资源对象,一般是嵌入邮件的图片MIME实例
  • temp、mask:邮件模板中要填充的体温、口罩检测状态变量

完整参考代码示例

# 导入依赖
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import datetime

# 初始化message
message = MIMEMultipart()

# 提前定义变量示例,请替换为你的实际业务值
temp = 36.5
mask = "已佩戴"
# 读取本地图片生成mime对象示例,请替换为你的图片路径
with open("detect_face.jpg", "rb") as f:
    mime = MIMEImage(f.read())
    mime.add_header("Content-ID", "<0>")

# 你的原有代码
message.attach(mime)

body = MIMEText('''
<html>
    <body>
        <h1>Alert</h1>
        <h2>A new has Person entered the Premises</h2>
        <h2>Body Temperature: {}</h2>
        <h2>Mask: {}</h2>
        <h2>Time: {}</h2>
        <p>
            <img src="cid:0">
        </p>
    </body>
</html>'''.format(temp, mask, datetime.now()), 'html', 'utf-8')

# Add HTML/plain-text parts to MIMEMultipart message
# The email client will try to render the last part first
message.attach(body)

内容的提问来源于stack exchange,提问作者Esteban Gonzalez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:27:04