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

Airflow自定义告警中log_url作为a标签href属性在邮件内不生效问题

问题根因
  • HTML标签被转义:代码中使用&lt;、&gt;作为<、>的替代字符,属于HTML转义实体,邮件客户端会直接将其识别为普通文本展示,不会解析为可点击的<a>链接标签。
  • 字符串未做变量插值:定义的default_html_content字符串中的{log_url}、{MY_AIRFLOW_IP_ADDRESS}占位符没有绑定实际值,输出时会保留占位符文本,无法生成有效链接。
  • 自定义变量未引入:如果MY_AIRFLOW_IP_ADDRESS是你预设的Airflow服务地址常量,需要先在函数作用域内获取对应值再使用。
调整后的代码
# 提前定义/引入你的Airflow服务实际访问地址
MY_AIRFLOW_IP_ADDRESS = "http://你的Airflow服务IP:端口"

def task_my_alert(context):
    task_id=context['task'].task_id
    dag_run = context.get('dag_run')
    log_url=context.get('task_instance').log_url
    # 替换转义字符为原生尖括号,字符串前加f启用变量插值
    default_html_content = (
             f'Log: <a href={log_url}>Link</a><br>'
             f'Getback:<a href={MY_AIRFLOW_IP_ADDRESS}>CLICK FOR BACK</a><br>'
        )
    sub=f"dag has errors"
    send_email(to='my@email.com', subject=sub ,  html_content=default_html_content)
额外验证点

如果修改后仍然存在链接异常,可检查以下配置:

  • 确认使用的是Airflow官方airflow.utils.email.send_email方法,该方法默认会将html_content参数作为HTML内容渲染,若为自定义封装的发信方法,需要确认接口支持HTML格式内容传入。
  • 确认Airflow配置文件中webserver.base_url已经配置为你实际的Airflow服务访问地址,确保生成的log_url是完整的绝对路径,不会出现跳转404的问题。
  • 检查邮件客户端是否默认禁止了陌生发件人的链接跳转,可将发件人地址加入白名单后重试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:06:00