Выберите почтовый ящик "отправленная почта" или "вся почта" в Ruby Net :: IMAP - PullRequest
17 голосов
/ 04 марта 2011

Я пытаюсь использовать Net :: IMAP в Ruby для поиска всей почты, отправленной мной, но у меня возникают проблемы при выборе чего-либо, кроме INBOX.

imap.select('INBOX')

отлично работает, но

imap.select('Mail/sent-mail')

, как показано в документации Net :: IMAP, дает мне «Неизвестный почтовый ящик».

Кстати, это должно использоваться с gmail.

Я также попытался добавить "in", "where "в мой imap.search (), но это не помогло.

Текущий код:

imap.select('INBOX')
now = Time.now.localtime - 1209600 #two weeks
since = now.day.to_s() + "-" + Date::MONTHNAMES[now.month] + "-" + now.year.to_s()
puts "since"
puts since
begin
  mail_ids = imap.search(["FROM", "me", "SINCE", since])
  mail_ids.each do |id|
    text = imap.fetch(id, 'BODY[HEADER.FIELDS (SUBJECT)]').to_s.split("{").second.chop
    puts text
  end
end

Ответы [ 4 ]

33 голосов
/ 04 марта 2011

Папка «отправленная почта» будет отличаться от поставщика к поставщику. Папка Gmail "отправленная почта" называется "[Gmail]/Sent Mail". Выберите это вместо этого, и оно будет работать.

imap.select('[Gmail]/Sent Mail')

К вашему сведению, системные папки Gmail следующие:

  • INBOX
  • [Gmail]/All Mail
  • [Gmail]/Drafts
  • [Gmail]/Sent Mail
  • [Gmail]/Spam
  • [Gmail]/Starred
  • [Gmail]/Trash
10 голосов
/ 29 октября 2011

Вы можете найти имена всех папок с помощью:

imap.list('*', '*') 

Имя папок Gmail будет меняться в зависимости от выбранного пользователем языка. Так на испанском например:

"[Gmail] / Вся" почта будет "[Gmail] / Todos"

2 голосов
/ 22 июня 2013

Мне показалось полезным следующее (ruby 2.0.0-p195)

# list all folders
imap.list '', '%'
0 голосов
/ 08 сентября 2016

Не используйте LIST "" *. у вас многие получат тысячи почтовых ящиков. Это можно сделать так, как предложил @ maček. LIST "" %. И если вас интересуют только дочерние / вложенные папки, вы можете сделать что-то вроде imap.list '', '%/%' и так далее imap.list '', '%/%/%'

dump of the terminal:

==> перечисляет только родителей. глубина 1

C: RUBY0002 LIST "" "%"
S: * LIST (\HasNoChildren) "/" Calendar
S: * LIST (\HasNoChildren) "/" Contacts
S: * LIST (\HasNoChildren) "/" "Deleted Items"
S: * LIST (\HasNoChildren) "/" Drafts
S: * LIST (\Marked \HasChildren) "/" INBOX
S: * LIST (\HasNoChildren) "/" Journal
S: * LIST (\HasNoChildren) "/" "Junk E-Mail"
S: * LIST (\HasNoChildren) "/" Notes
S: * LIST (\HasNoChildren) "/" Outbox
S: * LIST (\HasNoChildren) "/" "Sent Items"
S: * LIST (\HasNoChildren) "/" Tasks
S: RUBY0002 OK LIST completed.

список детей. глубина 2.

C: RUBY0003 LIST "" "%/%"
S: * LIST (\HasNoChildren) "/" INBOX/subfolder
S: RUBY0003 OK LIST completed.
C: RUBY0004 SELECT INBOX/subfolder
S: * 2 EXISTS
S: * 0 RECENT
S: * FLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent)
S: * OK [PERMANENTFLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent)] Permanent flags
S: * OK [UIDVALIDITY 37286] UIDVALIDITY value
S: * OK [UIDNEXT 6] The next unique identifier value
S: RUBY0004 OK [READ-WRITE] SELECT completed.

прочитайте это полезное HOWTO нажмите меня, пожалуйста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...