Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Сети > Не сохраняет вложения на русском |
Автор: Rodeon 6.6.2010, 04:05 | ||
Здравствуйте! Почту всю принимала программа, пока вложенный файл в одном из писем не был на русском языке! Большая часть кода отсюда http://forum.vingrad.ru/forum/topic-84672/view-all.html Проверяю при помощи:
Файлы аттача на английском пишутся и сохраняються нормально, на русском в memo не заносится имя файла (такое ощущение что отобразить не может, пустую строку заносит) и файл сам тоже не сохраняеться. Я так понимаю надо скорее всего конвертировать имена файлов, которые на русском, только с какой кодировки и в какую!? Спасибо заранее за ответ! |
Автор: Rodeon 6.6.2010, 14:21 | ||||||
Отвечаю сам себе! Так как имя файла получаю вида =?koi8-r?Q?=F0=D2=C9=CC_=CB_=C4=CF=C7=CF=D7_=EB=F2=F3_2010=C7.xls?= или =?koi8-r?B?0NLFxNPUwdfMxc7JxSDOwSDQ0sHL1MnL1SDX1M/Sz8UuZG9j?= или =?UTF-8?B?0KDQtdGG0LXQvdC30LjRjyDQrtC60LguZG9j?= через if pos>0 и case ищу строку ?koi8-r?Q? или ?koi8-r?B? первый случай текст koi8-r Quoted-Printable для него использую сперва:
из комплекта indy, а потом
Нашел на форуме, автору спасибо! Во втором случае, если ?koi8-r?B? т.е. koi8-r base64 сперва использую
а потом снова функцию KoiToWin описанную чуть выше. изполученых имен файлов удаляю =?koi8-r?Q? или =?koi8-r?B? и в конце 2 символа а именно ?=, все получил имя файла, с которым теперь можно сохранять. По поводу =?UTF-8?B?, сначала натравливаю функцию Decode64, а потом стандартную Utf8toansi - на выходе имя файла на русском. Удаляю символы спереди и сзади и сохраняю вложение. Ура. Пока все работает. |
Автор: Rodeon 6.6.2010, 15:25 | ||
Очередная проблемма возникла когда вложенние имеет длинное имя, типа =?koi8-r?B?0M/Mz9bFzsnFIM/CIM/Sx8HOydrBw8nJIMkg0NLPx9LBzc3BINDSwQ==?= =?koi8-r?B?y9TJy8kg5+31IPXQ0sHXzMXOycUuZG9j?= т.е. имя состоит из двух частей! фиг знает как убрать это ограничение!? Пока что делаю так! Маленько переделал код Snowy http://forum.vingrad.ru/forum/topic-84672/view-all.html
Если есть какие соображения как убрать это ограничение, буду рад! |
Автор: Rodeon 7.6.2010, 01:04 |
Утомил меня Indy своими ошибками(uneven size in decodetostream, range check error, max line length exceeded и т.д.) Причем зависимость появления ошибок так установить и не удалось. Перепробовал за 1.5 дня около 10 компонентов для работы с почтой, остановился на SakEmail components так как даже в демо по работе с почтой есть все что мне нужно было, поддержка руского языка в прикрепленных файлах, прогрессбар общий и для каждого письма в отдельности. Осталось доделать пример и можно пользоваться! Если кому надо, то компонент прикрепил! |