IndyのTIdPOP3コンポーネントを使ってメール受信のDLLを作成しています。
しかし、添付したファイルを受信しようとすると(Retrive)必ずEIdTableNotFound例外を起こすファイルがあります。しかし、
・エラーを起こしたファイル名を別のファイルに付けると正しく送信される。
・エラーを起こしたファイルに別の名前を付けると正しく送信される。
・ヘッダ項目を調べてみても正常に送られたファイルと見比べてみてもおかしなところは見受けられない。
・送り側、受け側を変更しても同様なエラーを起こす
のです。
いかなる理由が考えられますか?
ちなみに、出力されるメッセージは「Coding table entry not found」です。
添付ファイルが日本語名だからとか?
エラーが起きたファイル名はどのようなものでしょうか。
エラーが起きなかったファイル名はどのようなものでしょうか。
送ったファイルのファイル名は「0708_nor_02.jpg」という画像ファイルです。
ただ、この名前を別のファイルに付けてみたところ正常に動作します。
また、エラーを起こしたファイルに別の名前「日本語名など」をつけても
正常に動作します。
Indy8ですよね。
Indy9,Indy10のソースを検索してみましたが、EIdTableNotFoundという例外は定義されていませんでした。
見てみると、Base64のデコードで、テーブル(0-9,a-z,A-Z,=)にない文字があった場合に起きるみたいです。
バージョンが古いようでしたら、バージョンアップしてみてください。
現在、Indy8は8.00.23が出ています。
Indy9にバージョンアップさせたところ、例外が起きなくなりました。
ありがとうございました。
ツイート | ![]() |