【发布时间】:2017-10-28 17:43:45
【问题描述】:
我不知道如何解决这个问题。我检查了大多数 smtplib 线程和那些关于“AttributeError: 'tuple' object has no attribute 'encode'”
我正在尝试创建消息模板以从 Python3 脚本发送电子邮件。出于某种原因,当我添加消息模板时,我无法以任何方式修复它。
import smtplib
import additional
import datetime
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
#server commends
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo()
#credentials of sender
FROM = "xxx.gmail.com"
PASSWORD = additional.x #hidden password in other .py file
#logging in
server.login(FROM, PASSWORD)
#template for recievers
TOADDR = ["reciever email"]
CC = ["FIRST CC", "2ND CC"]
SUBJECT = "testing"
TEXT = "Let's check if this works and I joined everything correctly"
#MSG template
FINAL_TO = CC + [TOADDR]
message = MIMEMultipart()
message['From'] = "Michal", FROM
message['To'] = TOADDR
message['Cc'] = ", ".join(CC)
message['Subject'] = SUBJECT
message.attach(MIMEText(TEXT))
MSG = message.as_string()
#Join reciever with CC
FINAL_TO = CC + [TOADDR]
server.sendmail(FROM, FINAL_TO, MSG)
TIME = datetime.datetime.now()
print("Email sent at {}".format(TIME))
如上所述,我的输出是:
Traceback (most recent call last):
File "/home/galander/Desktop/sending email/app.py", line 39, in <module>
MSG = message.as_string()
File "/usr/lib/python3.6/email/message.py", line 158, in as_string
g.flatten(self, unixfrom=unixfrom)
File "/usr/lib/python3.6/email/generator.py", line 116, in flatten
self._write(msg)
File "/usr/lib/python3.6/email/generator.py", line 195, in _write
self._write_headers(msg)
File "/usr/lib/python3.6/email/generator.py", line 222, in _write_headers
self.write(self.policy.fold(h, v))
File "/usr/lib/python3.6/email/_policybase.py", line 326, in fold
return self._fold(name, value, sanitize=True)
File "/usr/lib/python3.6/email/_policybase.py", line 369, in _fold
parts.append(h.encode(linesep=self.linesep, maxlinelen=maxlinelen))
AttributeError: 'tuple' object has no attribute 'encode'
【问题讨论】:
-
什么是完整的回溯?这告诉我们这个异常发生在哪里,以及 Python 是如何到达那里的。
-
这很重要,因为您发布的代码不会在任何地方调用
encode()。 -
我怀疑是您的
message['From']行才是真正的原因。你不能在那里使用元组。 -
刚刚添加了所有错误信息
标签: python-3.x smtplib