Подтвердить что ты не робот

Выберите почтовый ящик "отправленное письмо" или "вся почта" в Ruby Net:: IMAP

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

imap.select('INBOX')

работает нормально, но

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

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

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

Я также попытался добавить "in", "any" к моему 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
4b9b3361

Ответ 1

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

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

FYI, системные папки Gmail:

  • INBOX
  • [Gmail]/All Mail
  • [Gmail]/Drafts
  • [Gmail]/Sent Mail
  • [Gmail]/Spam
  • [Gmail]/Starred
  • [Gmail]/Trash

Ответ 2

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

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

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

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

Ответ 3

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

# list all folders
imap.list '', '%'

Ответ 4

Не используйте 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 нажмите-мне, пожалуйста