0

imap を使用して電子メールをアプリケーションにインポートしています。

次のコードがあります。

since_time = Net::IMAP.format_date sync_time

google.email.all folder: folder, keys: [ 'SINCE', since_time ] do |mail, imap, uid|
  flags = imap.uid_fetch(uid, ['FLAGS'])[0].attr['FLAGS']

  if flags.include?(:Seen)
    #flags always has :Seen

メールが未読の場合は未読としてマークしたいのですが、上記のコードを使用すると、:Seen フラグが常に返されます。

私の理解では、メールが既読としてマークされている場合にのみ、:Seen フラグが返されるということでした。

フラグの仕組みを誤解していますか?

4

1 に答える 1

2

FETCHアプリケーションの残りの部分が一部のコマンドをトリガーするかどうかを確認しますBODY。その操作の副作用として、\Seenキーワードが自動的に設定されます。あなたはおそらく を探していBODY.PEEKます。メールボックスを読み取り専用で開くEXAMINE代わりに使用することもお勧めします。SELECT

于 2013-09-10T16:14:34.043 に答える