Jenkins流水线使用AWS SES发邮件失败,发件人身份异常求助
问题分析与解决
问题根源
你流水线里用的是Jenkins原生mail步骤,且from字段留空,导致Jenkins自动用服务器主机名生成默认发件人邮箱(就是报错里的jenkins@ip-xxxx-xxxx-xxxx-xxxx.ap-south-1.compute.internal),这个邮箱没在AWS SES验证过,被沙箱模式拦截了。而系统配置的测试邮件是用你设置的已验证管理员邮箱发送的,所以能成功。
解决方案
方案1:给原生mail步骤指定验证过的发件人
直接修改mail步骤的from字段,填入你在SES验证过的邮箱:
always { mail bcc: '', body: "<br>Project: ${env.JOB_NAME} <br>Build Number: ${env.BUILD_NUMBER} <br> URL de build: ${env.BUILD_URL}", cc: '', charset: 'UTF-8', from: "myemail0@gmail.com", // 替换为你验证过的邮箱 mimeType: 'text/html', replyTo: '', subject: "${currentBuild.result} CI: Project name -> ${env.JOB_NAME}", to: "myemail0@gmail.com" }
方案2:改用Email Extension插件的emailext步骤(推荐)
既然已经装了Email Extension插件,直接用它的emailext步骤,会自动继承系统配置的管理员邮箱作为发件人,不用手动指定:
always { emailext( subject: "${currentBuild.result} CI: Project name -> ${env.JOB_NAME}", body: """<br>Project: ${env.JOB_NAME} <br>Build Number: ${env.BUILD_NUMBER} <br> URL de build: ${env.BUILD_URL}""", to: "myemail0@gmail.com", mimeType: 'text/html', charset: 'UTF-8' ) }
额外验证
检查Jenkins全局配置:
- 确认「系统管理员邮件地址」是你在SES验证过的邮箱
- 确认Email Extension插件的「Default From Address」设置为
${DEFAULT_FROM}(自动读取系统管理员邮箱)
内容的提问来源于stack exchange,提问作者user22087029
相关产品推荐
相关产品推荐

