7

D2007 でコンパイルされた同じソース コードが元のファイル名で正しく名前が付けられた添付ファイル付きの電子メールを生成するのに、D2009 exe が ATTnnnnn.DAT という名前の添付ファイル付きの電子メールを生成するのはなぜですか?

D2007 と D2009 に付属のそれぞれの Indy ライブラリを使用しています。添付ファイルに元のファイル名がない場合、ユーザーは添付ファイルをダブルクリックして開くことができません (通常、添付ファイルは Excel スプレッドシートです)。

注: コードは同一です。コンパイラと Indy ライブラリのみが異なります。D2009 exe によって送信された添付ファイルを保存して、名前を zzzz.xls に変更すると、正しく開くことができます。つまり、メールと添付ファイルは正しく処理されます。メールの添付ファイル名が間違っているだけです。

誰かが、添付ファイルのヘッダーが壊れていると示唆しました。インディは壊れた?再現するコードは、多くの Web サイトで見られる標準的なコードですが、必要に応じて投稿できます。事前にt​​hx。

4

5 に答える 5

7

問題が見つかりました - 解決策の正確な詳細については、adug.com.au メーリング リストを参照してください。要約すると、D2009 に付属する Indy のバージョン (バージョン 10.2.5) には、IdMessageClient.pas に 2 つのエラーがあります。添付部分の処理で name= と filename= を設定する 2 行のユニット (1 行番号はメモリからの 1222 で、もう 1 行は数行前です。申し訳ありませんが、今家にいます。今晩仕事で修正しました)。これらのセミコロンがないと、添付ファイルのヘッダーが適切に形成されず、Outlook が添付ファイルに対して独自の名前を生成します。

修正は、name= または filename= トークンを出力する前にセミコロン ( ; ) を出力することです。次に、インディを再構築する必要があります。

Indy (10.1.5) の D2007 バージョンを比較したところ、常に Content-Type 行の最後にセミコロンが配置されていることがわかり、D2009 に含まれているバージョンに潜んでいた問題を回避しています。

于 2008-09-19T10:09:59.623 に答える
1

現在の Tiburon スナップショット ( http://indy.fulgan.com/ZIP )に更新することをお勧めします。Indy のバージョンは現在 10.5.7 です。

于 2009-05-27T13:52:44.223 に答える
0

リチャードの推奨事項は私にとってはうまくいきました。正しい添付ファイルと Indy のメッセージ ソースを比較しました。Content-type と Content-disposition の後ろにセミコロンを置きます (1220 行目あたりで、実際に動作します。Richard さん、ありがとうございます!

于 2009-08-11T22:11:25.003 に答える
0

インディコードまでたどる必要があるかもしれません。Indy には過去に多くのバグがあったため、これが原因である可能性があります。さかのぼれば、すぐに見つかるはずです。

于 2008-09-18T13:42:09.873 に答える
0

IdAttachment.Filename プロパティは設定されていますか? Indy のバージョン間で、Filename の動作方法が変更された可能性があります。

于 2008-09-18T13:45:31.610 に答える