Django:TypeError防止将字节般的对象附加到电子邮件中



我正在尝试使用XLSXWriter生成XLSX文件,然后在电子邮件中以附件作为附件发送。这是我现在拥有的:

def WriteToExcel(project):
    output = BytesIO()
    workbook = xlsxwriter.Workbook(output)
    #putting in data
    workbook.close()
    xlsx_data = output.getvalue()
    # xlsx_data contains the Excel file
    return xlsx_data
def project_email (request, project_id):
    project = Project.objects.get(id = project_id)
    xlsx_data = WriteToExcel(project)
    message = EmailMessage("Heading", 'Here is the message.', 'HOST', ['SAMPLE@gmail.com'])
    message.attach_file(xlsx_data)
    message.send()

当我尝试发送电子邮件时,我有以下错误:

typeError at/projstatus/1/email

无法在字节样对象上使用字符串模式

有什么办法可以解决吗?例如,将XLSX文件非二进制文件或电子邮件中有一个附加二进制文件的函数?

实际上我发现了这个问题。您只需要这样的东西:

def project_email (request, project_id):
    project = Project.objects.get(id = project_id)
    xlsx_data = WriteToExcel(project)
    message = EmailMessage("Heading", 'Here is the message.', 'HOST', ['SAMPLE@gmail.com'])
    message.attach("Report.xlsx", xlsx_data, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
    message.send()

我将在这里离开这里,以防其他人想知道同一件事

相关内容

最新更新