Моя ситуация:
Я отправляю html письма успешно. Стили, шрифты и большинство изображений отображаются в соответствии с планом.
Но некоторые изображения из предварительного просмотра продукта были повреждены сценариями почтового прокси Google. На электронную почту приходится около 6 изображений размером 100×100 пикселей. Вокруг 10% из них ломаются — так как в источнике вообще нет изображения (потому что в адресе появляется символ +).
Проверка кода помогает мне только угадать причину, но не полностью исправить ее для меня.
Мой источник, который я отправляю по электронной почте:
<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
Что я пытаюсь это исправить:
переадресовывать. В адресах, подобных этому, /for_email/products_images/690/690xxxxxxx.j+pg Я просто перенаправляю на /for_email/products_images/690/690xxxxxxx.jpg после удаления +. Но это не решение для ошибок, таких как /for_email/products_images/690/690xxx+xxxx.jpg, потому что nginx работает с такими файлами, и я не буду менять его по такой незначительной причине.
Меньшая длина. Чтобы это исправить, я также меняю изображения имен. Ранее это был хэш MD5, как это.
7c6a78c6ac5a6c56ac56a5c67ac5a6c57a65c67ac567a.jpg
И теперь это
6657435previmg.jpg
Это помогает снизить процент неработающих ссылок до половины, но не полностью.
Я имею эту проблему довольно давно: около полугода и иногда пытаюсь решить ее, когда есть свободное время. Поиск в Google все еще не помогает мне, я надеюсь, что вы делаете это.
Я отправляю его через PHP на 1С-Битрикс, но я не думаю, что это имеет значение (но не совсем уверен).
Вы смотрели на зашифрованную почту, которую отправляет ваш почтовый сервер?
Другими словами, что на самом деле получает GMail? Просто отправьте одно и то же письмо одним и тем же способом в один из ваших собственных почтовых ящиков и используйте инструмент для проверки полного почтового источника.
Причина, по которой я это говорю, заключается в том, что GMail обычно вставляет знаки плюс, когда в URL есть пробел.
Вы должны быть абсолютно уверены, что это не ваша цель, вставив их. В данном случае недостаточно просто посмотреть, что вы намереваетесь отправить.
Я могу только догадываться, почему в вашем выводе появятся пробелы. Все зависит от того, как вы отправляете электронные письма. Обычно это вызвано преобразованием или кодированием / декодированием.
Благодаря @ KIKO Software и по его ответу я нашел в чем проблема!
Таблица продуктов была добавлена в одна длинная строка HTML.
И мой почтовый сервер разделил эту строку с помощью \ n символы перед отправкой. Это разделение может быть где угодно: в середине любого слова (слово будет разбито); любой стиль (стили нарушены); и даже URL для SRC изображений (неработающие изображения).
Решение просто: я просто добавляю «\ П \ г» везде в этой таблице продуктов и теперь все в порядке.