Python 创建并发送文件作为电子邮件附件,而不保存在驱动器上

Python 创建并发送文件作为电子邮件附件,而不保存在驱动器上,python,email,email-attachments,smtplib,Python,Email,Email Attachments,Smtplib,我希望我可以发送电子邮件附件,而不保存在驱动器上,文件应该只存在于临时内存中的脚本执行时间 我曾尝试使用io.BytesIO(),但它不起作用,我只收到了一些错误 import xlsxwriter import smtplib import os from email.mime.multipart import MIMEMultipart from email.utils import formatdate from email.mime.base import MIMEBase from

我希望我可以发送电子邮件附件,而不保存在驱动器上,文件应该只存在于临时内存中的脚本执行时间

我曾尝试使用io.BytesIO(),但它不起作用,我只收到了一些错误

import xlsxwriter
import smtplib
import os

from email.mime.multipart import MIMEMultipart
from email.utils import formatdate
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email import encoders


workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet('sheet1')
worksheet.write(1, 1, 'Testing')
workbook.close()

SMTP_IP = 'some_ip'
smtpxd = smtplib.SMTP(SMTP_IP)

content = 'here we go again'
msg_subject = 'TEST'
fro = 'foo@gmail.com'

toaddr = 'me@gmail.com'
msg = MIMEMultipart()
msg['From'] = fro
msg['To'] = toaddr
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = msg_subject

with open("test.xlsx", "rb") as attachment:
    part = MIMEBase('application', "octet-stream")
    part.set_payload(attachment.read())

encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; 
filename="test.xlsx"')
body = ('%s\r\n' % content)
msg.attach(part)
msg.attach(MIMEText(body, 'html'))
text = msg.as_string()

rcpt = toaddr
rcpt = rcpt.split(', ')

smtpxd.sendmail(fro, rcpt, text)
os.remove('test.xlsx')

因此,这段代码会发送一封带有Attachment的电子邮件,并在之后删除文件,但这并不是我真正想要的。

您需要显示无法完成所需操作的代码,而不是成功完成所需操作的代码。只有前者可以被调试,你需要显示那些不能完成你想做的事情的代码,而不是那些成功完成你不想做的事情的代码。只有前者可以调试。