почему мой D2009 exe создает электронные письма с вложениями с именем ATTnnnnn.DAT - PullRequest
7 голосов
/ 18 сентября 2008

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

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

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

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

Ответы [ 5 ]

7 голосов
/ 19 сентября 2008

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

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

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

1 голос
/ 27 мая 2009

Я рекомендую обновить до текущего снимка Tiburon (http://indy.fulgan.com/ZIP). Версия Indy сейчас 10.5.7.

0 голосов
/ 12 августа 2009

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

0 голосов
/ 18 сентября 2008

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

0 голосов
/ 18 сентября 2008

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

...