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

Laravel-mix-mjml转换邮件链接时POST表单参数无法传递如何修复

问题根因
  • MJML默认的mjt.lu链接追踪逻辑仅针对带href属性的<a>标签做替换,不会识别<form>标签的action属性,且追踪跳转本身基于GET请求的302重定向实现,天生不支持POST请求体透传,就算强行把表单action替换为追踪链接,提交的隐藏参数也会在跳转过程中被丢弃。
  • Laravel-mix-mjml插件的默认链接扫描规则只匹配href属性,没有覆盖form[action]选择器,所以浏览器预览环境下表单的action地址不会进入替换流程,自然不会生成追踪链接。
  • 包括Gmail、Outlook、Apple Mail在内的绝大多数主流邮件客户端,默认会拦截邮件内的POST表单提交行为,直接在邮件内嵌表单本身兼容性极差,即使修复追踪问题也会出现大面积用户无法正常提交的情况。
修复方案

推荐方案(兼容性100%)

直接废弃邮件内的POST表单,改用带参数的GET跳转链接,完全适配MJML追踪逻辑和所有邮件客户端规则,修改后的模板代码如下:

<mj-text>
   <a href="https://www.carsale.com/login?customerId={{ urlencode($inquiry->customer->customer_id ?? '') }}&authToken={{ urlencode($inquiry->customer->auth_token ?? '') }}">Lets go</a>
</mj-text>

参数拼接时记得用urlencode处理,避免特殊字符导致链接解析异常。

兼容方案(必须保留POST提交时使用)

如果业务侧登录接口不支持GET请求,按以下两步调整:

  1. 修改Laravel-mix-mjml配置,将https://www.carsale.com加入追踪排除域名列表(配置项通常为excludeTrackDomains),避免表单action被错误替换为mjt.lu追踪链接,保证POST参数可以正常提交。
  2. 若需要保留链接追踪能力,不要直接使用原表单或原直链,改为指向自有服务的带签名GET链接:用户点击链接跳转到自有服务的中转页后,由中转页校验签名、携带对应参数自动发起POST请求到目标登录接口即可,该方案同时兼容邮件客户端限制、MJML追踪逻辑和POST提交需求。

注意:不要通过修改插件源码的方式强行替换form的action为mjt.lu追踪链接,mjt.lu官方追踪服务仅支持GET跳转,不支持POST请求体转发,强行替换会导致所有表单提交完全失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:01:04