掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ファイル化したメールを表示するには? (ID:1864)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
以前の受信したデータをファイル化するには?の続きです。 受信したデータ(POP3)のファイル化まではうまくいったのですが 現在のコードだと受信メニューをクリックすると最初に受信した ファイルが何個も出来てしまうという事が発生してしまいます。 前回の中でにしのさんが言っていたUIDが一緒のメールをサーバから 落とさなくすることなどを実装したいのですが受信するコードのどこに どのようなコードを書くと良いのでしょうか? またリストビューをクリックしたらファイル化したデータを読み込む ように直したいのですがどう直せばよろしいでしょうか? リストの読み込みのコードは以下のとおりです。 procedure TMainForm.MailListViewClick(Sender: TObject); var Subject: array [0..HEADER_MAX] of Char; Date: array [0..HEADER_MAX] of Char; From: array [0..HEADER_MAX] of Char; Header: array [0..HEADER_MAX] of Char; Body: PChar; Size: Integer; begin mSave.Enabled := False; mReply.Enabled := False; mDelete.Enabled := False; mPopupReply.Enabled := False; mPopupDelete.Enabled := False; ToolButton3.Enabled := False; ToolButton5.Enabled := False; with MailListView do begin // 選択されているか? if SelCount > 0 then begin // 見てわかりますが、毎回受信のたびに接続からやってます。 // 本来であれば ID やパスワードを入力後、一度に受信し、 // サーバー上から受信したメールを削除し、ファイル等に // 保存しておき、題名一覧クリックでは、保存してあるメール // を読み込む処理が入るべきでしょう。 // POP3 サーバーに接続 S := NMailPop3Connect(PChar(Pop3Name)); if S <> INVALID_SOCKET then begin // 選択されている番号が、メールの数より少ないか? if Selected.Index < NMailPop3Authenticate(S, PChar(Id), PChar(Password), ApopFlag) then begin // メールのサイズを得て、メモリを確保 Size := NMailPop3GetMailSize(S, Selected.Index + 1); GetMem(Body, Size); // メールを読み込む NMailPop3GetMail(S, Selected.Index + 1, subject, date, from, header, Body, nil, nil); // 表示用の Memo をクリアして受信内容を追加。 BodyMemo.Lines.Clear; BodyMemo.Lines.Add(Strpas(Body)); // カーソルを先頭に移動 BodyMemo.SelStart := 0; BodyMemo.SelLength := 0; // 確保したメモリを開放 FreeMem(Body); end; end; // 接続終了 NMailPop3Close(S); S := INVALID_SOCKET; mSave.Enabled := True; mReply.Enabled := True; mDelete.Enabled := True; mPopupReply.Enabled := True; mPopupDelete.Enabled := True; ToolButton3.Enabled := True; ToolButton5.Enabled := True; end; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.