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

AWS SES部署EC2时文件/目录找不到问题排查

问题分析与解决方案

问题根源

  • 你的代码中使用FileDataSource(at)加载附件,本地环境传入的是Windows本地路径(C:\Users开头),但EC2是Linux系统,既没有对应的路径,也不存在这些本地文件,因此触发"文件/目录未找到"错误。
  • 当前代码仅支持本地文件路径,无法直接处理URL形式的附件源。

修改方案(支持URL加载附件)

修改Service中附件处理的逻辑,将本地文件数据源替换为URL数据源,直接从指定URL读取文件内容作为附件:

修改后的附件处理代码

if(attach != null){
    for (String urlStr : attach){
        MimeBodyPart att = new MimeBodyPart();
        try {
            URL url = new URL(urlStr);
            // 使用URLDataSource直接加载URL资源
            DataSource dataSource = new URLDataSource(url);
            att.setDataHandler(new DataHandler(dataSource));
            
            // 从URL中提取文件名,可根据实际URL格式调整截取逻辑
            String fileName = urlStr.substring(urlStr.lastIndexOf('/') + 1);
            // 如果URL包含参数,去掉参数部分
            if(fileName.contains("?")){
                fileName = fileName.split("\\?")[0];
            }
            att.setFileName(fileName);
            
            msg.addBodyPart(att);
        } catch (MalformedURLException e) {
            throw new IllegalArgumentException("无效的附件URL: " + urlStr, e);
        } catch (IOException e) {
            throw new RuntimeException("读取附件URL失败: " + urlStr, e);
        }
    }
}

额外注意事项

  • 网络连通性:确保EC2服务器能访问目标URL。如果是私有资源(比如AWS S3私有对象),需要给EC2实例配置对应的IAM权限,或者在URL中携带有效签名。
  • URL格式:传入的attachList必须是合法的URL(如https://example.com/files/report.pdf),不能再使用本地文件路径。
  • 异常处理:新增的URL相关异常(如格式错误、读取失败)要针对性处理,避免笼统的异常捕获导致问题排查困难。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:14:55