У меня возникла проблема при работе с Indy в Lazarus: при попытке сохранения аттачмента в файл возникает EIdException с сообщением error saving attachment.
Я пытался написать совсем простую программу (для теста), которая открывает файл *.eml и сохраняет из него аттачмент в файл. Всё работает нормально до момента сохранения аттачмента.
Для сохранения аттачмента использую код взятый из примера Indy_10_MailClient:
TIdAttachmentMemory(Msg.MessageParts.Items[intMSGIndex]).SaveToFile(filename);
Именно на этой строке возникает exception.
Я использую при разработке:
Linux - Ubuntu 10.04
Freepascal 2.4.2
Lazarus 0.9.30
Indy 10.2.0.3
Заранее благодарю за любую помощь.
error saving attachment при работе с Indy в Lazarus
Модератор: Модераторы
У меня была такая фигня, как выяснилось Indy не нравились непечатные символы в имени файла. Я лечил это обработкой filename и заменой на пробелы. Это было в windows.
Если не поможет сделайте имя файла без пробелов. И только английскими буквами.
И учтите , что в винде имена файлов в кодировке cp1251, а в Lazarus в utf8. Поэтому иногда нужно применять UTF8ToAnsi
TIdAttachmentMemory(Msg.MessageParts.Items[intMSGIndex]).SaveToFile(UTF8ToAnsi(filename));
Если не поможет сделайте имя файла без пробелов. И только английскими буквами.
И учтите , что в винде имена файлов в кодировке cp1251, а в Lazarus в utf8. Поэтому иногда нужно применять UTF8ToAnsi
TIdAttachmentMemory(Msg.MessageParts.Items[intMSGIndex]).SaveToFile(UTF8ToAnsi(filename));
Нет, с именами файлов проблем нет. Я пробовал задавать короткие имена файлов, без пробелов и только из латинских букв. Под windows не пробовал, на данный момент пишу только под Linux.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
AlexL, выкладывайте тестовый пример с ошибкой
