IndyのPOP3コンポーネントでメールを受信した際に余計なファイルができる

解決


うめ  2003-10-17 00:33:23  No: 5265

こんにちは。
今、Inidy9.0のTIdPop3コンポーネントを用いてメールの受信ソフトをつくっています。
受信自体には問題ないのですが、受信動作と同時に"C:\Documents and Settings\ユーザ名\Local Settings\Temp"フォルダに"*.tmp"というファイルが次々と作成されてしまいます。
長い間使っているとディスクを圧迫する気がするのですが、このファイルを作成しない方法はありますか。または、手動で消去しなければならないのでしょうか。
よろしくお願いします。


にしの  2003-10-17 09:36:54  No: 5266

こちらの環境では、*.tmpは増えませんね、自前のコードで保存しない限り。
他のソフトが増やしているという可能性はありませんか?


にしの  2003-10-17 09:43:19  No: 5267

訂正。
添付ファイルがあるとできますね。


にしの  2003-10-17 10:07:12  No: 5268

NoDecodeがFalseのときに、メッセージはデコードされ、MessagePartsに入ります。
このとき、TIdAttachmentが作成され、*.tmpも作られるようです。
妙な箇所が見つかりました。
TIdAttachment.Createでは、引数AFileNameから、FStoredPathname、FFilenameを設定しています。
デバッガで見ると、*.tmpのフルパスは、StoredPathnameに入っています。
しかし、FileNameには、実際の添付ファイルの名前が入っています。
TIdAttachment.Destroyで、FileIsTempFileがTrueのとき、「ファイル名がFileNameのファイルを」削除しています。
ここをStoredPathnameにすればよいかと思います。
ただ、FileIsTempFileは、POP3で読み込んだばかりのときはFalseですので、MessagePartsが1つ以上あったなら、それらをチェックして、TIdAttachmentであれば、FileIsTempFileをTrueにする必要があります。


うめ  2003-10-17 23:23:34  No: 5269

ありがとうございました。
TIdAttachmentのとき、FileIsTempFileをTrueにして、
添付ファイルをダウンロードした後にFileNameをStoredPathnameに
変更するとうまく行きました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加