TypeError:“MIMEText”对象不可调用

Posted

技术标签:

【中文标题】TypeError:“MIMEText”对象不可调用【英文标题】:TypeError: 'MIMEText' object is not callable 【发布时间】:2018-12-25 07:37:20 【问题描述】:

我有以下代码(sn-p)

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase

msg = MIMEMultipart()

msg['Subject'] = 'Test message'
msg['From'] = sender
msg['To'] = row['email']
msg.attach = MIMEText(html_CONTENT, 'html')
filename = newFileName
attachment = open(newFileName, "rb")
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)

msg.attach(part)

在最后一行 (178) 我收到以下错误:

Traceback(最近一次调用最后一次):文件 “/Users/adieball/Dropbox/Multiverse/Programming/python/repositories/cloudologist/exam.py”, 第 198 行,在 main() 文件“/Users/adieball/Dropbox/Multiverse/Programming/python/repositories/cloudologist/exam.py”, 第 178 行,主要 msg.attach(part) TypeError: 'MIMEText' object is not callable

我有点困惑,因为我已经在上面一行调用了 MIMEText (msg.attach = MIMEText(HTML_CONTENT, 'html')

非常感谢任何帮助

【问题讨论】:

我有点担心文件名exam.py。如果这是一场真实的、现场的课堂考试,那么在这里提问就是作弊。 @Blacksilver 不,我只是将其命名为exam.py,因为脚本会为内部考试的参与者创建证书(报告实验室PDF)。 【参考方案1】:

这里:

msg.attach = MIMEText(HTML_CONTENT, 'html')

MIMEMultipart.attach() 方法与 MIMEText 实例的影子。所以当你到达这里时:

msg.attach(part)

您实际上是在尝试调用此 MIMEText 实例 - 实际上,它是不可调用的(它是可调用的 MIMEText ,就像所有 python 类一样)。

你当然要替换

msg.attach = MIMEText(HTML_CONTENT, 'html')

msg.attach(MIMEText(HTML_CONTENT, 'html'))

【讨论】:

以上是关于TypeError:“MIMEText”对象不可调用的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:在 include().hh 的情况下,视图必须是可调用的或列表/元组 [重复]

Dataframe Spark 2.2.1 上的可调用列对象

TypeError:包含另一个urls.py时,视图必须是可调用的或列表/元组[重复]

Dataframe Spark 2.2.1上的可调用列对象

MIMEText - 对象没有属性“编码”(SMTP)

Django 错误遵循教程 b/c 使用 3.1 而不是 1.9 TypeError:在 include() 的情况下,视图必须是可调用的或列表/元组 [重复]