如何通过Amazon-SES发送压缩文件至Gmail并让附件正常显示?
解决Gmail无法显示SES发送的压缩包附件问题
问题核心
你打包的压缩包包含了系统临时目录的完整路径结构(比如/tmp/xxxx-1234/这类格式),Gmail对这种带特殊系统路径的压缩包解析存在问题,导致附件显示为空。
修复方案
修改bash脚本里的压缩命令,确保压缩包内只包含你需要的tmp文件夹及其内容,而非带系统临时路径的目录结构。
方法1:进入临时目录后打包内容
假设你的临时目录路径是/tmp/my_temp_dir/,内部存放着目标图片和文档,执行以下命令:
# 进入临时目录 cd /tmp/my_temp_dir/ # 打包当前目录下所有内容,生成tmp.zip并放在上级目录 zip -r ../tmp.zip . # 返回原工作目录 cd -
生成的tmp.zip内,根目录就是你需要的文件和子文件夹,不会携带系统临时路径。
方法2:压缩时重命名目录路径
如果不想切换目录,直接用zip的路径转换参数:
# 将临时目录内容打包为tmp.zip,压缩包内根目录统一为tmp zip -r tmp.zip /tmp/my_temp_dir/ -x "*/.*" --transform 's,^/tmp/my_temp_dir/,tmp/,'
-x "*/.*":可选参数,用于排除隐藏文件--transform:将压缩包内的原路径/tmp/my_temp_dir/替换为tmp/,打开压缩包后直接看到tmp文件夹
验证压缩包结构
打包完成后,用以下命令查看压缩包内的路径结构:
unzip -l tmp.zip
正常输出应该类似:
Archive: tmp.zip Length Date Time Name --------- ---------- ----- ---- 0 2024-05-20 10:00 tmp/ 123456 2024-05-20 10:01 tmp/image.jpg 78900 2024-05-20 10:02 tmp/document.pdf --------- ------- 202356 3 files
这种结构Gmail就能正常识别并显示附件。
内容的提问来源于stack exchange,提问作者Bernadette
相关产品推荐
相关产品推荐

