Inkognitoss
@Inkognitoss
Full-stack разработчик.

Почему портится base64 внутри письма?

Не могу выяснить, почему с одного сервера письмо с со строкой base64 в img отправляется корректно, а с другого сервера нет.
Вот пример отличий, кусочек строки
из рабочего примера:
Izj8KyUbSSYQ8zFtbK5c5e1dZtwby25WRe4yPx4Oc5qy9y91mEh
в письме, где base64 повредился:
Izj8KyUbSSYQ8zFtbK5c5e1dZtwby25WRe4yPx4Oc5qy!
9y91mEh

Обратите внимание, что появляется символ "!"
Почему такое происходит? Входные данные (т.е. сама строка которая сгенерирована base64_encode в PHP корректная)
  • Вопрос задан
  • 624 просмотра
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А письмо изначально правильно генерируется?
RFC 2045
6.8. Base64 Content-Transfer-Encoding
The encoded output stream must be represented in lines of no more than 76 characters each.
Ответ написан
Inkognitoss
@Inkognitoss Автор вопроса
Full-stack разработчик.
Проблема решилась так:
В коде у себя, где генерирую строку base64
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);

Исправил ее и привел к такому виду:
$base64 = rtrim(chunk_split('data:image/' . $type . ';base64,' . base64_encode($data)));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы