掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
受信したデータをファイル化するには? (ID:1847)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
やっとファイル化までこぎつけれました。 でもまだこのファイルをリストとBodyMemoに読み込ませる作業と UIDが同じメールをファイル化しないというのをつけなくては いけないのですが、どうやれば良いでしょうか? 現在のリストを載せます。 procedure TMainForm.AddMailList(S: TSocket); var No, Count: integer; Subject: array [0..HEADER_MAX] of Char; Date: array [0..HEADER_MAX] of Char; From: array [0..HEADER_MAX] of Char; Header: PChar; I: TListItem; DataName: String; // NMLファイルのファイル名 Seq: Integer; // シーケンス番号 Body: PChar; // Bodyのデータ用 BodySize: Integer; // Bodyのファイルサイズ Fs: TFileStream; // ファイルストリーム strDate: String; // 日付の取得 begin // メール本文表示をクリア BodyMemo.Lines.Clear; // ListView もクリア HeaderDataClear; MailListView.Items.Clear; // POP3 サーバに接続する S := NMailPop3Connect(PChar(Pop3Name)); if S <> INVALID_SOCKET then begin if (Id = '') or (Password = '') then begin // ID とパスワード入力 if InputForm.ShowModal = mrOk then begin Id := InputForm.IdEdit.Text; Password := InputForm.PasswordEdit.Text; end; end; // メールの数を得る No := NMailPop3Authenticate(S, PChar(Id), PChar(Password), ApopFlag); if No >= 0 then begin for Count := 1 to No do begin // 順番にヘッダの内容を読み、ListView に追加 GetMem(Header, HEADER_MAX); NMailPop3GetMailStatus(S, Count, Subject, Date, From, Header, False); {I := MailListView.Items.Add; I.Caption := StrPas(Subject); I.SubItems.Add(StrPas(Date)); I.SubItems.Add(StrPas(From)); I.Data := Header; StrLCat(Header, #13#10, HEADER_MAX - 1);} strDate := StrPas(Date); DataName := 'NML' + Copy(strDate, 1, 4) // yyyy + Copy(strDate, 6, 2) // mm + Copy(strDate, 9, 2) // dd + Copy(strDate, 12, 2) // hh + Copy(strDate, 15, 2) // mm + Copy(strDate, 18, 2); // ss Seq := 0; while FileExists(RcvFolder + 'RcvMail\' + DataName + '_' + IntToStr(Seq) + '.nml') do Inc(Seq); try BodySize := NMailPop3GetMailSize(S, Count); GetMem(Body, BodySize); NMailPop3GetMail(S, Count, Subject, Date, From, Header, Body, nil, nil); RcvFolder := ExtractFilePath(Application.ExeName); Fs := TFileStream.Create(RcvFolder + 'RcvMail\' + DataName + '_' + IntToStr(Seq) + '.nml', fmCreate); Fs.WriteBuffer(Header^, StrLen(Header)); Fs.WriteBuffer(#13#10, StrLen(#13#10)); Fs.WriteBuffer(Body^, StrLen(Body)); finally I := MailListView.Items.Add; I.Caption := StrPas(Subject); I.SubItems.Add(StrPas(Date)); I.SubItems.Add(StrPas(From)); if Fs <> nil then Fs.Free; if Body <> nil then FreeMem(Body); end; end; end else begin // サーバーからのエラーメッセージを取得 NMailGetMessage(NMAIL_GET_ERROR_MESSAGE, Subject, HEADER_MAX); MessageDlg('ログインエラー:' + StrPas(Subject), mtError, [mbOK], 0); end; NMailPop3Close(S); S := INVALID_SOCKET; end; end; 長くなってきたのでファイル化についてはここで解決です。 次はファイル読み込みで書き直します。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.