2008-09-18 4 views
7

Почему мой D2009 exe создает электронные письма с вложениями с именем ATTnnnnn.DAT, когда тот же исходный код, скомпилированный в D2007, создает письма с вложениями, правильно названными с исходным именем файла?Почему мой D2009 exe создает письма с прикрепленными файлами с именем ATTnnnnn.DAT

Я использую соответствующие библиотеки Indy, которые поставляются с D2007 и D2009. Не имея исходного имени файла в приложении, вы не можете дважды щелкнуть вложение, чтобы открыть его (обычно вложения - это электронные таблицы Excel).

Примечание: код идентичен - только библиотеки компилятора и Indy различаются. Вложение, отправленное EXE D2009, может быть сохранено и переименовано, чтобы сказать zzzz.xls, а затем открывается правильно - то есть электронная почта и вложение проходят правильно - это просто имя файла вложения электронной почты, которое испортилось.

Кто-то предложил, чтобы заголовки вложений были повреждены. Разве Инди был сломан? Код для воспроизведения - это стандартный стандартный код, который можно найти на многих веб-сайтах, но я могу отправить сообщение в случае необходимости. Thx заранее.

ответ

0

Боюсь, вам просто нужно будет проследить в код indy. В прошлом у Indy было множество ошибок, так что это может быть причиной. Если вы проследите, вы должны найти его довольно быстро.

0

Устанавливается ли свойство IdAttachment.Filename? Возможно, что между версиями Indy они изменили способ использования Filename.

7

Я нашел эту проблему - пожалуйста, смотрите список adug.com.au рассылки для точных деталей решения, но в целом - версия Indy, которая приходит с D2009 (версия 10.2.5) имеет 2 ошибки в модуле IdMessageClient.pas в двух строках, которые задают имя = и имя_файла = в обработке части вложения (номер одной строки - 1222 из памяти, а другой - несколько строк раньше; жаль, что я дома; Я установил это вечером на работе). Отсутствие этих полуколоней приводит к плохому формированию заголовка вложения, и Outlook создает собственное имя для вложения.

Исправление состоит в выводе точки с запятой (;) перед выдачей имени = или filename = tokens. Затем Инди нужно перестроить.

Я сравнил версию D2007 из Инди (10.1.5) и может видеть, что это всегда ставит точку с запятой в конце Content-Type линии, таким образом, избегая проблем, которые проникли в версии, включенной в D2009.

+0

Хорошее место. Спасибо, что поделились этим! – robsoft 2008-09-23 14:46:11

0

Рекомендации Ричарда работали для меня. Я сравнивал источники сообщений с правильным вложением и с Инди. Положите точки с запятой на Content-type и Content-disposition (вокруг линии 1220 действительно, и это работает. Спасибо, Ричард!

 Смежные вопросы

  • Нет связанных вопросов^_^