如何在Laravel Mail+Gmail场景下转义&符解决SendInBlue链接编码异常
&符号双重编码修复
- 优先避免手动拼接带查询参数的URL,使用Laravel自带的URL工具类生成规范的查询字符串,从源头避免拼接错误:
use Illuminate\Support\Facades\URL; // 正确生成带参数的URL 'link' => rtrim(env('FRONT_APP'), '/') . '/verification' . URL::query([ 'userid' => 25, 'code' => 12345 ]);
- Blade模板输出时,确认URL本身安全的前提下,使用非转义输出语法
{!! !!}替代默认的{{ }},避免Blade自动做HTML实体编码导致的双重转义:
<a href="{!! $link !!}">PRESS TO CONTINUE</a>
_se参数异常注入修复
该参数是SendInBlue点击跟踪功能自动注入的,SendInBlue默认会重写邮件内所有链接,添加统计参数用于追踪用户点击行为,重写过程中如果遇到本身已做过HTML编码的URL,极易出现二次编码问题。
可根据需求二选一修复:
- 不需要点击统计的场景:登录SendInBlue后台,进入「设置」-「事务邮件」-「点击跟踪」,关闭该选项即可。关闭后SendInBlue不会修改邮件内的链接,也不会注入_se参数。
- 需要保留点击统计的场景:严格按上述编码修复方案处理,保证传给模板的URL是原生未做HTML编码的格式,模板用非转义语法输出,SendInBlue的重写逻辑即可正确处理参数。
内容的提问来源于stack exchange,提问作者Andrius Kairys
相关产品推荐
相关产品推荐

