如何使用laravel邮件和gmail转义&号



我使用Laravel Mail通过SendInBlue发送电子邮件。这一切都工作得很好,但今天我开始面临一个问题,这是以前没有的。

在blade电子邮件模板中生成的链接出现问题。

下面是生成链接的代码示例:
'link' => env('FRONT_APP').'verification?userid=25&code=12345'

链接随后被发送到Blade电子邮件模板,并按如下方式使用:

<a href="{{ $link }}">PRESS TO CONTINUE</a>

然而,邮件发出后,URL实际上是:/verification?_se=YW5kcml1cy5rYlyeXMubHRAZ21haWuY39t&userid=25&amp%3Bcode=12345

问题似乎是与"&"的特殊字符编码有关。但是将其更改为&amp;将URL更改为以下内容:/verification?_se=YW5kcml1cy5rYlyeXMubHRAZ21haWuY39t&userid=25&amp%3Bamp%3Bcode=12345

我也不确定这个位_se=YW5kcml1cy5rYlyeXMubHRAZ21haWuY39t来自哪里。在我开始使用SendInBlue之前,所有这些都没有发生。我正在用我的Gmail帐户发送电子邮件进行测试。有什么好主意吗?

为了避免转义刀片文件中的字符串,请使用{!! !!}而不是{{ }}

<a href="{!! $link !!}">PRESS TO CONTINUE</a>

你的问题中有一个重要的因素:你是通过Sendinblue发送电子邮件的。正如他们的文档中所述,Sendinblue更新了href以添加他们自己的跟踪元素,因此属性"_se"可能是在那个时候添加的。但这应该不是一个问题(在你开始分析这个问题之前可能就是这样)。

关于"&&quot;除了N69S答案,你应该首先通过检查视图生成的代码来定义在哪一步转义这个字符(只需在之前添加一个dd语句)。调用Sendinblue API)。然后你就会知道你是否需要修复你的PHP代码,或者你是否应该请求Sendinblue的支持。

问题似乎已经解决了。它在Sendinblue一侧。他们在添加«_se»参数时引入了一个bug。

它影响了9月15日至16日之间发送的所有电子邮件链接。

最新更新