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

使用boto3 SESv2模板邮件发送fpdf2生成PDF为空问题

解决SESv2模板邮件PDF附件内容为空的问题

问题原因

你遇到的PDF附件页数正确但内容为空的问题,核心原因是fpdf2的output()调用方式不正确,导致传递给SESv2的PDF字节流实际是空的。本地保存PDF正常是因为你使用了带文件名的output('filename.pdf'),而获取字节流时的调用没有触发正确的内容生成逻辑。

修复步骤

1. 修正PDF字节流获取代码

在fpdf2中,要正确获取PDF的字节内容,需要显式指定dest='S'参数(表示返回字符串内容),再编码为bytes:

pdf_file = fpdf.FPDF(orientation="P", unit="mm", format="A4")
pdf_file.add_page()
pdf_file.set_auto_page_break(auto=True, margin=15)
# ... 生成PDF内容的代码
# 正确获取PDF字节流
file_content = pdf_file.output(dest='S').encode('latin-1')

注:如果使用fpdf2 2.5.0及以上版本,直接调用pdf_file.output()即可返回bytes,但显式指定dest='S'能兼容更多版本。

2. 验证字节流有效性

在将字节流传递给邮件发送函数前,可先保存到本地验证内容:

with open('verify.pdf', 'wb') as f:
    f.write(file_content)

打开verify.pdf确认内容正常后,再传入邮件附件。

3. 确认邮件附件参数正确性

你的邮件发送代码中,AttachmentDict的参数基本符合要求,ContentId是可选字段,无需强制设置,不影响附件内容展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:23:09