2

我的情况:
我正在成功发送 html 电子邮件。样式、字体和大部分图像都按计划显示。

但是来自产品预览的一些图像被谷歌邮件代理脚本破坏了。每封电子邮件大约有 6 张图片,每张图片大小为 100x100 像素。其中大约10%损坏 - 因为源代码根本没有图像(因为地址中出现 + 符号)。

检查代码只是帮助我猜测原因,而不是为我完全修复它。

我通过电子邮件发送的 src:

<img src="http://www.example.com/for_email/products_images/690/690xxxxxxx.jpg">

Google Mail 在向用户显示时将其更改为:

<img src="https://ci5.googleusercontent.com/proxy/iyxxxuR-nG_Gst2xxxYN1-Qjxxx06hEE=s0-d-e1-ft#http://www.example.com/for_email/products_images/690/690xxxxxxx.jpg">

一切都很好,但在 10% 的情况下,我有这些断开的链接

<img src="https://ci5.googleusercontent.com/proxy/iyxxxuR-nG_Gst2xxxYN1-Qjxxx06hEE=s0-d-e1-ft#http://www.example.com/for_e+mail/products_images/690/690xxxxxxx.jpg">
<img src="https://ci5.googleusercontent.com/proxy/iyxxxuR-nG_Gst2xxxYN1-Qjxxx06hEE=s0-d-e1-ft#http://www.example.com/for_email/products_images/690/690xxx+xxxx.jpg">
<img src="https://ci5.googleusercontent.com/proxy/iyxxxuR-nG_Gst2xxxYN1-Qjxxx06hEE=s0-d-e1-ft#http://www.example.com/for_email/products_images/690/690xxxxxxx.j+pg">

看看这些优点:

/for_e+mail/products_images/690/690xxxxxxx.jpg
/for_email/products_images/690/690xxx+xxxx.jpg
/for_email/products_images/690/690xxxxxxx.j+pg

我尝试解决的问题:

  1. 重定向。在这样的地址中 /for_email/products_images/690/690xxxxxxx.j+pg 我只是在删除+后重定向到 /for_email/products_images/690/690xxxxxxx.jpg 。但这不是像 /for_email/products_images/690/690xxx+xxxx.jpg 这样的错误的解决方案,因为 nginx 可以处理此类文件,我不会因为如此小的原因而更改它。

  2. 长度较少。为了解决这个问题,我还更改了名称的图像。以前是这样的 md5 哈希。

    7c6a78c6ac5a6c56ac56a5c67ac5a6c57a65c67ac567a.jpg
    

    现在是

    6657435previmg.jpg
    

    它有助于将断开链接的百分比降低到一半,但不能完全降低。

我很久以前就有这个问题:大约半年,偶尔有空的时候尝试解决它。谷歌搜索仍然没有帮助我,我希望你这样做。

我在 1C-Bitrix 上通过 PHP 发送它,但我认为这并不重要(但不完全确定)。

4

2 回答 2

1

您是否查看过邮件服务器发送的编码邮件?

换句话说,GMail 实际收到的是什么?只需使用完全相同的方法将相同的邮件发送到您自己的邮箱之一,然后使用工具检查完整的邮件来源。

我之所以这么说是因为 GMail 通常会在 URL 中有空格时插入加号。

您必须绝对确定插入它们不是您的目的。在这种情况下,仅查看您打算发送的内容是不够的。

我只能猜测为什么您的输出中会出现空格。这完全取决于您发送电子邮件的方式。通常它是由转换或编码/解码引起的。

于 2018-03-19T13:17:21.050 回答
0

感谢@KIKO Software和他的回答,我发现了问题所在!

产品表被添加到一个长 HTML 字符串中。

我的电子邮件服务器在发送之前用 \n 符号分割了这个字符串。这种分割可以在任何地方:在任何单词的中间(单词会被打断);任何样式(样式已损坏);甚至是 src 图像(损坏的图像)的 url。

解决方案很简单:我只是在这个产品表中的任何地方添加“\n\r”,现在一切都很好。

于 2018-03-22T07:52:36.970 回答