我正在尝试使用Ruby中的Net :: IMAP来搜索我发送的所有邮件,但是我在选择INBOX以外的任何邮件时遇到了麻烦。
imap.select('INBOX')
工作正常,但
imap.select('Mail/sent-mail')
如Net :: IMAP文档所示,为我提供了“未知邮箱”。
顺便说一下,这将与gmail一起使用。
我也尝试在我的imap.search()中添加“in”,“anywhere”,但是没有解析。
当前代码:
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
答案 0 :(得分:33)
“已发送邮件”文件夹因提供商而异。 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
答案 1 :(得分:10)
您可以使用以下命令查找所有文件夹的名称:
imap.list('*', '*')
Gmail文件夹名称将根据用户选择的语言而变化。所以在西班牙语例如:
“[Gmail] /全部”邮件将是“[Gmail] / Todos”
答案 2 :(得分:2)
我发现以下内容很有帮助(ruby 2.0.0-p195)
# list all folders
imap.list '', '%'
答案 3 :(得分:0)
请勿使用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 click-me please