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

Azure DevOps Pipeline调用EmailReportV2任务时遇Index.js文件找不到错误

解决Azure DevOps Pipeline邮件任务文件找不到的问题

错误原因

出现##[error]File not found: '/home/vsts/work/_tasks/EmailReportV2_36fd41b1-8024-4ce9-a5a0-53c3e54ed105/2.0.10/Index.js'错误,是因为你的Pipeline代理环境中未部署EmailReportV2@2对应的扩展任务文件,且你无法通过市场安装应用,因此需要用原生脚本替代该任务实现邮件发送。

替代方案1:用Python脚本发送SMTP邮件

你的代理是Linux环境(路径显示/home/vsts),可直接使用预装的Python编写SMTP发送脚本,无需额外安装市场应用。

YAML配置示例

- task: PythonScript@0
  displayName: 'Send Email Report'
  condition: succeeded() # 仅在构建成功时执行
  inputs:
    scriptSource: 'inline'
    script: |
      import smtplib
      from email.mime.text import MIMEText
      from email.mime.multipart import MIMEMultipart

      # 邮件配置
      smtp_server = "你的SMTP服务器地址"
      smtp_port = 587 # 根据服务器实际端口调整,常见25/587/465
      smtp_user = "你的SMTP认证用户名" # 无需认证可注释相关步骤
      smtp_password = "你的SMTP认证密码"
      sender_email = "发件人邮箱@work.com"
      to_emails = ["myemail@work.com", "myco-workersemail@work.com"]
      subject = "Job Details"

      # 构建邮件内容
      message = MIMEMultipart()
      message["From"] = sender_email
      message["To"] = ", ".join(to_emails)
      message["Subject"] = subject

      # 自定义邮件正文,可插入Pipeline内置变量
      body = """
      构建任务已成功完成。
      构建详情:
      - 构建ID: $(Build.BuildId)
      - 构建编号: $(Build.BuildNumber)
      - 触发分支: $(Build.SourceBranchName)
      """
      message.attach(MIMEText(body, "plain"))

      # 发送邮件
      try:
          with smtplib.SMTP(smtp_server, smtp_port) as server:
              server.starttls() # 服务器不需要TLS可注释
              server.login(smtp_user, smtp_password) # 无需认证可注释
              server.sendmail(sender_email, to_emails, message.as_string())
          print("邮件发送成功")
      except Exception as e:
          print(f"邮件发送失败: {e}")
          raise

补充说明

  • 如果代理未预装Python,可添加前置任务指定Python版本:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.x'
    addToPath: true
  • 根据SMTP服务器实际要求调整加密方式(如端口465需用smtplib.SMTP_SSL)

替代方案2:用Bash脚本发送邮件(依赖sendmail)

若代理已配置好sendmail并指向你的SMTP服务器,可使用以下简化脚本:

- bash: |
    echo -e "Subject: Job Details\n\n构建任务已成功完成。\n构建ID: $(Build.BuildId)\n构建编号: $(Build.BuildNumber)" | sendmail -v myemail@work.com,myco-workersemail@work.com
  displayName: 'Send Email Report'
  condition: succeeded()

内容的提问来源于stack exchange,提问作者Jian Ruiz Mangampo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:22:40