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


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

14.03.2018 04:54:15 Просмотров 70 Источник

Моя ситуация:
Я успешно отправляю 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
    

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

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

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

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/49279590/google-mail-insert-pluses-in-the-src-path-of-images-in-html-emails#comment85713671_49279590
Я делаю файл с меньшей длиной от строки md5 до идентификатора продукта. Это помогает, Но мало. Но я также могу сделать путь короче с помощью /for_email/products_images/ к чему-то вроде этого: / prdimgs/
https://stackoverflow.com/questions/49279590/google-mail-insert-pluses-in-the-src-path-of-images-in-html-emails#comment85713736_49279590
Я имел в виду имя файла для изображений. Gmail может думать о своем спаме или имеет ограничение на то, сколько он может прочитать в url-адресе прокси-сервера
https://stackoverflow.com/questions/49279590/google-mail-insert-pluses-in-the-src-path-of-images-in-html-emails#comment85717108_49279590
Вы смотрели на закодированную почту, которую рассылает ваш почтовый сервер? Другими словами, что на самом деле получает GMail? Просто отправьте то же самое письмо, используя точно такой же метод, в один из ваших собственных почтовых ящиков и используйте инструмент для проверки полного источника почты. Причина, по которой я говорю это, заключается в том, что GMail обычно вставляет знаки плюса, когда в URL-адресе есть пробел. Вы должны быть абсолютно уверены, что это не ваш конец, вставляя их. Просто глядя на то, что вы намерены отправить, в этом случае недостаточно.
https://stackoverflow.com/questions/49279590/google-mail-insert-pluses-in-the-src-path-of-images-in-html-emails#comment85727804_49279590
@kiko-программное обеспечение, вы правы. На других почтовых серверах тоже пробелы, только в разных местах. Спасибо. Пожалуйста, сделайте свой комментарий в качестве ответа, так что я смогу принять его и закрыть.
https://stackoverflow.com/questions/49279590/google-mail-insert-pluses-in-the-src-path-of-images-in-html-emails#comment85728232_49279590
@A. Денис: это было предположение, поэтому я сделал это комментарий, но, к счастью, это было на самом деле то, что проблема была. Я превратил свой комментарий в реальный ответ.

Ответы - В почте Gmail вставить свои плюсы в пути src изображений в HTML-письма / Google mail insert pluses in the src path of images in html emails

Является ответом!
KIKO Software

19.03.2018 04:17:21

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

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

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

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

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

https://stackoverflow.com/questions/49279590/google-mail-insert-pluses-in-the-src-path-of-images-in-html-emails/49363939#comment85847139_49363939
Благодаря вам я нашел точную проблему и исправил ее. Просто добавив \n\r в длинную длинную строку HTML.
A. Denis

22.03.2018 10:52:36

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

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

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

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

https://stackoverflow.com/questions/49279590/google-mail-insert-pluses-in-the-src-path-of-images-in-html-emails/49423242#comment85848968_49423242
Добавление "\n\r " в ваш HTML-код будет работать, но вы должны думать об этом каждый раз, когда вы создаете новое HTML-письмо. Другие люди боролись с этим, и решение заключается в кодировании HTML-части сообщения в Base64. Тогда не имеет значения, как выглядит HTML. См.: ctrlq.org/code/19840-base64-encoded-email будьте осторожны с кодировкой MIME, легко ошибиться. В качестве альтернативы, используйте что-то вроде PHPMailer, он кодирует почту для вас: github.com/PHPMailer/PHPMailer
https://stackoverflow.com/questions/49279590/google-mail-insert-pluses-in-the-src-path-of-images-in-html-emails/49423242#comment85854588_49423242
Спасибо, я проверю его.
Помочь в развитии проекта:
Закрыть X