You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Sendgrid发送压缩Folium地图邮件时,ZIP附件无法打开的求助

修复Folium地图ZIP附件无法打开的问题

你的代码能生成ZIP文件并完成邮件发送,但附件提示「无效的ZIP文件」,核心原因是ZIP文件还未完成写入就提前读取了内容。

在with zipfile.ZipFile(...)代码块内,ZIP的完整写入操作要等到块结束时才会完成(自动执行关闭流程,写入目录等收尾数据)。你现在在块内调用zip_buffer.seek(0)并后续获取内容,拿到的是未完成的ZIP数据,自然无法正常解压。

修复后的代码:

map_content = m.get_root().render()
zip_buffer = io.BytesIO()
# 完成ZIP写入并自动关闭后再操作缓冲区
with zipfile.ZipFile(zip_buffer, 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipf.writestr("event_map.html", map_content.encode('utf-8'))
# 移到with块外执行指针重置
zip_buffer.seek(0)

attachments = [location_attachment, coverage_attachment, zip_buffer.getvalue()]
filenames = [
    "Raw Data 1.csv",
    "Data 2.csv",
    "event_map.zip"
]
filetypes = ["text/csv", "text/csv", "application/zip"]

额外排查项:

  • 确认location_attachment和coverage_attachment的内容格式正常,不会干扰ZIP附件的解析
  • 若问题仍存在,可尝试改用zipfile.ZIP_STORED模式(不压缩),排查是否是压缩算法的兼容性问题

内容的提问来源于stack exchange,提问作者soiryk139

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:32:10