财务给客户发 30MB 的 PDF 对账单,立刻收到退信 552 5.3.4 Message size exceeds fixed maximum message size。附件实际 28MB,Base64 编码后变成 38MB。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,很多邮件网关的单封上限是 25MB,算的是编码后的体积,不是文件原始大小。Base64 会把体积放大约三分之一,28MB 的文件直接超线。发送端没有在提交前校验。
碰到「附件 Base64 膨胀」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
base64 -w0 report.pdf | wc -c # 约等于原始大小乘以 1.37 split -b 8m report.pdf report_part_
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
具体做法是,提交前按编码后体积估算 超过 20MB 就换方式;大附件改走对象存储签名链接 邮件里只放地址;确实要发就压缩或拆分 单个控制在 10MB 内;把网关上限写进配置 前后端共用同一个值。
最后用这个标准收尾,改用下载链接后邮件正常投递,收件人能打开完整 PDF,不再出现 552 退信。
