批量邮寄多个附件会导致 Flask 中的文件损坏

Posted

技术标签:

【中文标题】批量邮寄多个附件会导致 Flask 中的文件损坏【英文标题】:Bulk Mailing multiple Attachments result in corrupted files in Flask 【发布时间】:2021-10-28 11:37:47 【问题描述】:

我正在编写一个带有附件的 FlaskMail 应用程序,它是一个 WTForm 的MultipleFileField。我也在阅读来自 xlsx 文件的电子邮件,并批量发送带有多个附件的电子邮件。 但是,只有列表中的第一个人能够阅读附件,其余的人会得到文件的损坏版本。

这是我的代码:

代码

    with mail.connect() as conn:
        for contact in contacts:
            message = "Hi %s \n\n" % (contact['name']).capitalize()
            message += body
            subject = subject
            msg = Message(recipients=(contact['email']).split(),
                          sender=sender,
                          html=message,
                          subject=subject,
                          )
            for f in request.files.getlist('attachment'):
                msg.attach(filename=f.filename,
                           content_type=f.content_type,
                           data=f.read())
            conn.send(msg)
        return Response("Success")

【问题讨论】:

【参考方案1】:

参考this的帖子解决了。

with mail.connect() as conn:
    for contact in contacts:
        message = "Hi %s \n\n" % (contact['name']).capitalize()
        message += body
        subject = subject
        msg = Message(recipients=(contact['email']).split(),
                      sender=sender,
                      html=message,
                      subject=subject,
                      )
        for f in request.files.getlist('attachment'):
            msg.attach(filename=f.filename,
                       content_type=f.content_type,
                       data=f.read())
        conn.send(msg)
        f.seek(0)
    return Response("Success")

代码中唯一的变化是添加了以下语句。

f.seek(0)

【讨论】:

以上是关于批量邮寄多个附件会导致 Flask 中的文件损坏的主要内容,如果未能解决你的问题,请参考以下文章

以附件形式邮寄文件

如何批量重命名损坏的文件扩展名?

我用于邮寄表格的 php 脚本不起作用

第八篇 Flask中的蓝图

PHP - 批量邮寄和检查服务器响应

ASP.NET C# 电子邮件附件在发送到多个电子邮件地址时最终变为 0 字节