如何阻止Gmail从网址中删除值?

时间:2013-03-27 18:36:27

标签: html email gmail

我最近了解到像Gmail这样的网络邮件客户端会对HTML电子邮件进行更改,例如将target="_blank"添加到<a>标记。

我还发现其他改动也会发生。当我从PHP脚本向Gmail(可能还有其他Web邮件客户端)发送HTML电子邮件时,任何链接的URL中包含的变量值都将被删除。因此,例如,这是我在PHP代码中设置的值:

$mailContent = '<p><a target="_blank" href="https://example.com/confirmation.html?verification=x1x1x1x1x1x1x1x&email=yyyy@email.com">click here to go to the web site and activate your account!</a></p>';

但是,当在Gmail中收到电子邮件时,HTML代码会出现如下:

<p><a target="_blank" href="https://example.com/confirmation.html?verification=&email=">click here to go to the web site and activate your account!</a></p>

x1x1x1x1x1x1x1xyyyy@email.com已从<a>标记中删除。

如何保护我要传递给网址的变量值,以便Gmail不会将其删除?

4 个答案:

答案 0 :(得分:3)

点击Gmail中邮件的查看原始/来源,查看这些网址是否应该如此。如果是这样,您就知道问题是Gmail如何格式化邮件以供您查看。如果它甚至在源代码中被删除了,我想知道你的网页/ php / CMS中是否有任何内容(你是否使用过它)会改变代码。

@Crisp说,你应该试试URL-encoding。这是W3 reference

答案 1 :(得分:1)

这可能不是一个完美的答案,但如果您的应用程序允许,我已多次使用URL缩短器。

http://goo.gl/是我的首选,因为API非常容易实现,而Google非常快。我在一个类中有一个函数,我只需通过它运行我的url并在任何需要它的地方发送返回。

答案 2 :(得分:1)

通过电子邮件发送html使用Quoted-printable编码。 $ mailContent的问题是“=”必须用= 3D

表示

尝试添加此内容: $ mailContent = quoted_printable_encode($ mailContent);

答案 3 :(得分:0)

另一个不完美的答案,但是,我的问题是我在html正文中包含一个http url,显然无效,因此我将其更改为https。这是在开发环境中,因此在生产上没有问题。

Here是有关此的更多信息:

邮件正文中导致不安全站点的任何URL也可能需要删除。使用https://transparencyreport.google.com/safe-browsing/search来验证这些链接。.所有链接均应正确加上“ https”前缀。 https://en.wikipedia.org/wiki/HTTPS Google似乎拒绝了“ http”。有时但并非总是如此,从任何签名中删除链接都会有所帮助。