質問

私はDelphiでの未読メッセージチェッカーアプリケーションの楽しみのためだけにやっています。 Indy 10を使用しています。Gmailに接続でき、すべてのメッセージを取得できますが、ここで問題に直面しています。メッセージが既に読まれているかどうかはわかりません。 Tidmessageコンポーネントには、メッセージが読み取られたかどうかを教えてください。コードは次のようになります:

procedure TForm1.btTestConnectionClick(Sender: TObject);
var
 i: Integer;
 count: Integer;
 flag: TIdMessageFlags;
begin
 if (pop3Test.Connected) then begin
  pop3Test.Disconnect;
 end;

 pop3Test.Username := edAccount.Text;
 pop3Test.Password := edPassword.Text;
 pop3Test.Host := HOST;
 pop3Test.AuthType := patUserPass;
 pop3Test.Port := PORT;
 pop3Test.Connect;
 Count := 0;
 for i := pop3Test.CheckMessages downto 1 do begin
      pop3Test.Retrieve(i, IdMessage1);
      if (mfSeen in IdMessage1.Flags) then begin
       Count := Count + 1;
      end;
 end;


 ShowMessage(IntToStr(Count));
 pop3Test.Disconnect;
end;

テストメールボックスには未読メッセージが1つありますが、すべての取得したメッセージにはFlags Enumプロパティが空になっているため、結果は常に0です。 Indy/Gmailの互換性の問題ですか?

ありがとう。

編集: Hotmailアカウントを使用してテストが同じ空噴火のプロパティの問題を示しているので、私は間違いなく何か間違ったことをしています。

役に立ちましたか?

解決

POP3 プロトコルはサポートしていません Message state information サーバーでは、読み取り、返信、または削除されたようなものです。使用してみてください IMAP for Gmail 代わりは。

他のヒント

この答えを見つけるための最良の(そして最も速い)方法は、Idimap*ユニットでのみ使用される「mfseen」のIndy sourcodeを検索することです。 rruzは正しい-pop3はこの固有の能力を提供しません。 POP3では、これをクライアント側で追跡する必要があります。このフラグは、IMAPの目的でIDMessageに追加されましたが、必ずしもPOP3用ではありません。

TidMessageFlagsは、おそらくTidimapmessageFlagsという名前が付けられているはずです

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top