Выберите почтовый ящик "отправленное письмо" или "вся почта" в 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
Ответы
Ответ 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 нажмите-мне, пожалуйста