LibCurl: Русские имена файлов на MAIL.RU

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Основной тред
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7867
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 85 раз

LibCurl: Русские имена файлов на MAIL.RU

Сообщение Игорь Столяров »

Всем привет !

Есть очень непонятная проблема.
При отправке файлов с русскими именами сервис MAIL.RU их не воспринимает.
SMTP сервис отправки значения не имеет, проблему сейчас вижу только на MAIL.RU:

1.jpg
Изменение кодировки имён файлов эффекта не даёт:

Код: Выделить всё

  !MyCurl.AddAttachment(Loc:QEmbed.QEFileName,,'Windows-1251')
  !MyCurl.AddAttachment(Loc:QEmbed.QEFileName,,'UTF-8')
   MyCurl.AddAttachment(Loc:QEmbed.QEFileName)
При отправке из любого почтового сервиса русские имена файлов есстественно показаны на MAIL.RU правильно.
Они передаются в теле письма вот так (отправлял с Yandex.Почты):

Код: Выделить всё

------==--bound.29032.r-production-main-98.vla.yp-c.yandex.net
Content-Disposition: attachment;
	filename="=?UTF-8?B?0J3QvtCy0YvQuSDRgtC10LrRgdGC0L7QstGL0Lkg0LTQvtC60YPQvNC10L3Rgi50eHQ=?="
Content-Transfer-Encoding: base64
Content-Type: text/plain;
	name="=?UTF-8?B?0J3QvtCy0YvQuSDRgtC10LrRgdGC0L7QstGL0Lkg0LTQvtC60YPQvNC10L3Rgi50eHQ=?="

MTIzNDU=
------==--bound.29032.r-production-main-98.vla.yp-c.yandex.net--
А LibCurl при отправке письма с вложенным файлом кодирует русские имена файлов вот так (и это проблема !):

Код: Выделить всё

--------------------------8jIacMBxKtNBQv4NkqGmAC
Content-Disposition: attachment; name="Новый текстовый документ.txt"; filename="Новый текстовый документ.txt"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64

MTIzNDU=
--------------------------8jIacMBxKtNBQv4NkqGmAC--
Вопрос:
Сталкивался ли кто-нибудь с проблемой имён файлов с русскими наименованиеми на MAIL.RU ?
Можно ли как-то это преодолеть ? Например включить кодирование имени файла в utf8+base64 (как на других сервисах) ?

Заранее спасибо за помощь.
Make Clarion Great Again ! 😎
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7867
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 85 раз

LibCurl: Русские имена файлов на MAIL.RU

Сообщение Игорь Столяров »

В принципе, я конечно могу закодировать имя файла в UTF-8 + BASE64 и сам ...

Код: Выделить всё

  MyCurl.AddAttachment('?UTF-8?B?' & printf('%v',ANSItoUTF8(Loc:QEmbed.QEFileName)),,'base64')
Но тогда LibCurl (есстественно) не находит файл по такому "имени" для добавления в почтовое сообщение ... 🤷‍♀️
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3267
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

LibCurl: Русские имена файлов на MAIL.RU

Сообщение Дед Пахом »

Добавил параметр pRemoteName в TCurlMailClass.AddAttachment, теперь для mail.ru можно передать то, что они ожидают:

Код: Выделить всё

curl.AddAttachment('Новый текстовый документ.txt',,,'=?UTF-8?B?0J3QvtCy0YvQuSDRgtC10LrRgdGC0L7QstGL0Lkg0LTQvtC60YPQvNC10L3Rgi50eHQ=?=')
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7867
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 85 раз

LibCurl: Русские имена файлов на MAIL.RU

Сообщение Игорь Столяров »

1. Спасибо ! Теперь всё прекрасно получилось !
Проверил на нескольких почтовых сервисах - всё OK.

MAIL.RU:
1.jpg
Дед Пахом писал(а): 11 Март 2025, 17:01 теперь для mail.ru можно передать то, что они ожидают
2. Требования MAIL.RU полностью соответствуют спецификациям RFC822 / RFC5322 и здесь им нечего предъявить. 🤷‍♂️
Там где на клавишах по одной букве - вполне достаточно использования кодировки UTF-8.
В случае использования национальных кодировок всё-таки требуется преамбула и BASE64 для всех полей MIME:

Код: Выделить всё

   From: '=?utf-8?B?' & 'emSrYXouYXWvbQBhdG9sLnJ1' & '?= <zakaz.atl@atl.ru>'
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3267
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

LibCurl: Русские имена файлов на MAIL.RU

Сообщение Дед Пахом »

Да косяк у них просто, пытаются декодировать обычный текст.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7867
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 85 раз

LibCurl: Русские имена файлов на MAIL.RU

Сообщение Игорь Столяров »

Я тоже так вначале подумал и забил на этот вопрос ...
Но потом решил проверить в каком виде ОТПРАВЛЯЮТ имена файлов другие почтовые сервисы,
вообще никак не связанные с MAIL.Ru и где нет проблем с отображением русских имён.

И бы неприятно удивлён - о чём собственно и расказал в первом сообщении ... 😢
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3267
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

LibCurl: Русские имена файлов на MAIL.RU

Сообщение Дед Пахом »

В этом и проблема - они думают, что все работают одинаково, и не проверяют кодировку.
С уважением, ДП
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3267
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

LibCurl: Русские имена файлов на MAIL.RU

Сообщение Дед Пахом »

Хотя может и проверяют, и правильно декодируют, а вот с показом косяк.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7867
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 85 раз

LibCurl: Русские имена файлов на MAIL.RU

Сообщение Игорь Столяров »

Можно зайти на вопрос с другой стороны.
В спецификации описывается, что кроме национальных кодировок ('UTF-8', ''Windows-1251'' и т.д.)
допустима кодировка 'base64'. И именно она почему-то сейчас используется всеми сервисами.

Т.е. всё остается как есть, но если идёт вызов:

Код: Выделить всё

  MyCurl.AddAttachment('C:\Out\Текстовый файл.txt',,'base64')
то должно формироваться для отправки:

Код: Выделить всё

Content-Disposition: attachment;
  filename='"=?UTF-8?B?' & printf('%v',ANSItoUTF8('Текстовый файл.txt')) & '?="'
  Content-Transfer-Encoding: base64
Content-Type: text/plain;
	name='"=?UTF-8?B?' & printf('%v',ANSItoUTF8('Текстовый файл.txt')) & '?="'
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3267
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

LibCurl: Русские имена файлов на MAIL.RU

Сообщение Дед Пахом »

Гляньте на декларацию метода AddAttachment ещё раз, особенно на 3-й параметр ("pCharset"), передавать в нем 'base64' не лучшая идея.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7867
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 85 раз

LibCurl: Русские имена файлов на MAIL.RU

Сообщение Игорь Столяров »

Спасибо, понял !
Предложеный Вами вариант полностью решает проблему, у меня вопросов нет. :D
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3267
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

LibCurl: Русские имена файлов на MAIL.RU

Сообщение Дед Пахом »

Дед Пахом писал(а): 12 Март 2025, 0:10 Хотя может и проверяют, и правильно декодируют, а вот с показом косяк.
Точно в показе дело, на картинке вместо Новый текстовый документ.txt один ромбик заменяет один кириллический символ.

Кстати, а если сохранить файл с ромбиками вместо букв, что будет?
С уважением, ДП
Ал
✯ Ветеран ✯
Сообщения: 1030
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

LibCurl: Русские имена файлов на MAIL.RU

Сообщение Ал »

Так и будет...
Несколько лет такая... на разных серверах стала появляться при рассылке...
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7867
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 85 раз

LibCurl: Русские имена файлов на MAIL.RU

Сообщение Игорь Столяров »

Дед Пахом писал(а): 13 Март 2025, 0:49 Кстати, а если сохранить файл с ромбиками вместо букв, что будет?
Ну сам MAIL.RU имя такого файла не показывает.
При сохранении такими же ромбиками записыввается на диск.
Можно открыть и т.д. Обычно переименовывали.
Но что-то достало - стали разбираться ...

1.jpg
Make Clarion Great Again ! 😎
Ответить