Search code examples
rubygmailimap

Select mailbox "sent mail" or "all mail" in Ruby Net::IMAP


I'm trying to use Net::IMAP in Ruby to search all mail sent by me, but I'm having trouble selecting anything other than INBOX.

imap.select('INBOX')

works fine, but

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

as shown on the Net::IMAP documentation gives me "Unknown Mailbox".

Incidentally, this is to be used with gmail.

I also tried adding "in", "anywhere" to my imap.search(), but that didn't parse.

Current code:

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

Solution

  • The "sent mail" folder will differ from provider to provider. Gmail's "sent mail" folder is named "[Gmail]/Sent Mail". Select that instead and it'll work.

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

    FYI, Gmail's system folders are the following:

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