В почте Gmail вставить свои плюсы в пути src изображений в HTML-письма



Моя ситуация:

Я успешно отправляю html-письма. Стили, шрифты и большинство изображений отображаются в соответствии с планом.



Но некоторые изображения из предварительных просмотров продуктов были нарушены скриптами прокси-сервера google mail. Есть около 6 изображений на электронную почту размером 100x100px каждое. Вокруг 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


    Это помогает снизить процент сломанной ссылки до половины, но не полностью.




У меня есть эта проблема для pretty очень давно: около полугода и время от времени пытаюсь решить ее, когда есть свободное время. Гугл все еще не помогает мне, я надеюсь, что вы делаете это.



Я отправляю его через PHP на 1С-Битрикс, но я не думаю, что это имеет значение (но не совсем уверен).

789   2  

2 ответов:

Вы смотрели на закодированную почту, которую рассылает ваш почтовый сервер?

Другими словами, что на самом деле получает GMail? Просто отправьте ту же самую почту, используя точно такой же метод, в один из ваших собственных почтовых ящиков и используйте инструмент для проверки полного источника почты.

Причина, по которой я говорю это, заключается в том, что GMail обычно вставляет знаки плюса, когда в URL есть пробел.

Вы должны быть абсолютно уверены, что это не ваш конец, вставляя их. Просто смотрю на то, что ты задумал. посылать в этом случае недостаточно.

Я могу только догадываться, почему пробелы появятся в вашем выводе. Все зависит от того, как вы отправляете электронные письма. Обычно это вызвано преобразованием или кодированием / декодированием.

Благодаря @Kiko Software и его ответу я нашел, в чем была проблема!

Таблица продуктов была добавлена в одну длинную строку HTML.

И мой почтовый серверразделяют эту строку с символами \n Перед отправкой. Это разбиение может быть где угодно: в середине любого слова (слово будет разбито); в любом стиле (стили будут разбиты); и даже в URL-адресах к изображениям src (разбитые изображения).

Решение простое: я просто добавляю "\n\r " везде в этом стол продуктов и все прекрасно теперь.

Comments

    Ничего не найдено.