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 回答