我有一个创建word文档的应用程序,我需要将其发送出去而不在本地保存。换句话说,我需要发送一个对象。我知道下面的代码不起作用,因为我的文档是一个对象。有没有办法做到这一点?
TypeError:强制转换为Unicode:需要字符串或缓冲区,找到文档
有谁知道怎么做?这就是我所拥有的:
def document_writer():
document = Document()
document.add_heading('Sample Document', 0)
document.add_paragraph("fsfsa")
document.add_heading('Addresses', 2)
return document
def mailsend(send_from, send_to, subject, text, login, password, document, files=None,
smtpserver='smtp.gmail.com:587'):
msg = MIMEMultipart()
msg['From'] = send_from
msg['To'] = send_to
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
msg.attach(MIMEText(text))
part = MIMEBase('application', "octet-stream")
part.set_payload(open(document, "rb").read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="crap.docx"')
msg.attach(part)
server = smtplib.SMTP(smtpserver)
server.starttls()
#server.starttls()
server.login(login, password)
server.sendmail(send_from, send_to, msg.as_string())
server.close()
答案 0 :(得分:0)
在您的代码中的某个时刻,函数需要string
但得到Document
类,而python则不知道如何转换为string
。
在您的函数document_writer
中,您正在创建此类Document
因此,您应该检查使用此类创建的Document
对象的位置。
然后解决这个问题可能有三种解决方案:
Document
类可以转换为字符串。然后你可以str(Document)
str()
转换为字符串,但具有执行此操作的特殊功能。然后你可以document_variable.convert_to_str_function()
Document
类作为文件保存到磁盘。然后你应该看一下这些答案:Binary file email attachment problem通过电子邮件发送基于磁盘的文件