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

如何读取存储在S3存储桶中的Amazon Workmail邮件文件

问题根因

你当前存入S3的文件本身是标准的RFC822格式EML邮件,无法打开的核心原因是两个:

  1. 生成S3文件Key时仅使用了随机UUID,没有添加.eml格式后缀,系统无法识别文件类型
  2. 上传时未指定正确的Content-Type元数据,S3默认会标记为二进制流文件,无法直接预览或打开

解决方法

一、修改代码适配后续新上传的邮件

  • 给S3文件Key添加.eml后缀
    将原有代码中key = str(uuid.uuid4())修改为:
    key = f"{uuid.uuid4()}.eml"
    
    修改后下载的文件自带邮件格式标识,直接用任意邮件客户端(Outlook、Thunderbird、系统自带邮件应用等)即可打开读取内容。
  • 上传时指定正确的邮件格式Content-Type
    调整s3.put_object调用参数,新增ContentType字段:
    s3.put_object(
        Body=parsed_msg.as_bytes(),
        Bucket=updated_email_bucket_name,
        Key=key,
        ContentType='message/rfc822'
    )
    
    配置后S3会正确标记文件格式,支持直接在控制台预览内容。

二、处理已存入S3的存量邮件文件

  • 批量重命名现有文件:遍历存储桶内的邮件文件,给所有无后缀的文件统一添加.eml后缀,重命名后即可正常打开
  • 批量更新元数据:如果需要支持S3控制台预览,可以调用S3的copy_object接口,批量更新存量文件的Content-Type为message/rfc822即可

三、可选:直接存储为可读纯文本

如果不需要保留原始邮件格式,可在代码中直接解析parsed_msg对象,提取发件人、收件人、主题、正文、附件列表等信息拼接为纯文本,将Key后缀改为.txt、上传ContentType设为text/plain,下载后直接用任意文本编辑器即可打开。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:57:02