类型错误:预期字符串有效负载:<class 'list'> 尝试发送带有 Python 3.9.6 中附加的 zip 文件的电子邮件时出错

Sem*_*per 5 python file

我使用以下代码(摘录)来发送电子邮件:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.base import MIMEBase
from email import encoders
smtpServer = "(Servername)"
smtpPort = (Portnumber)
smtpUsername = "(SMTP Username)" 
smtpPassword = "(Password)" 
sender = "(Username)" 
reciever = "(Username)"
subject = "(subject)"
body = "Text"
msg = MIMEMultipart()
msg['Subject'] = subject
msg['From'] = sender
msg['To'] = reciever
body = MIMEText(body, 'plain')
msg.attach(body)
msg = MIMEBase('application', 'octet-stream')
attach_file = open(zipfilename, 'rb')
payload = MIMEApplication(zipfilename)
payload.set_payload(attach_file.read(), 'rb')
encoders.encode_base64(payload)
payload.add_header('Content-Decomposition', 'attachment', filename=zipfilename)
msg.attach(payload)
smtpObj = smtplib.SMTP(smtpServer, smtpPort)
smtpObj.set_debuglevel(1)
smtpObj.starttls()
smtpObj.sendmail(sender, reciever, msg.as_string())
attach_file.close()
smtpObj.close()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Traceback (most recent call last):
  File "E:\Data\testmail.py", line 31, in <module>
    smtpObj.sendmail(sender, reciever, msg.as_string())
  File "E:\Program\Python\3.9.6\lib\email\message.py", line 158, in as_string
    g.flatten(self, unixfrom=unixfrom)
  File "E:\Program\Python\3.9.6\lib\email\generator.py", line 116, in flatten
    self._write(msg)
  File "E:\Program\Python\3.9.6\lib\email\generator.py", line 181, in _write
    self._dispatch(msg)
  File "E:\Program\Python\3.9.6\lib\email\generator.py", line 218, in _dispatch
    meth(msg)
  File "E:\Program\Python\3.9.6\lib\email\generator.py", line 239, in _handle_text
    raise TypeError('string payload expected: %s' % type(payload))
TypeError: string payload expected: <class 'list'>
Run Code Online (Sandbox Code Playgroud)

我已经在各种来源中进行了搜索(例如TypeError: string Payload Expected: <class 'bytes'>https://github.com/Pylons/pyramid_mailer/issues/24,...),但我发现的提示不是'适合。失败的原因是什么?我能做些什么?