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