选择邮箱";“已发送邮件”;或;“所有邮件”;在Ruby Net::IMAP中
我正在尝试使用Ruby中的Net::IMAP来搜索我发送的所有邮件,但除了收件箱之外,我在选择其他邮件时遇到了问题选择邮箱";“已发送邮件”;或;“所有邮件”;在Ruby Net::IMAP中,ruby,gmail,imap,Ruby,Gmail,Imap,我正在尝试使用Ruby中的Net::IMAP来搜索我发送的所有邮件,但除了收件箱之外,我在选择其他邮件时遇到了问题 imap.select('INBOX') 很好,但是 imap.select('Mail/sent-mail') 如Net::IMAP文档所示,它为我提供了“未知邮箱” 顺便说一句,这是用来与gmail 我还尝试在imap.search()中添加“in”、“anywhere”,但没有解析 当前代码: imap.select('INBOX') now = Time.now.loc
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
“已发送邮件”文件夹因提供商而异。Gmail的“发送邮件”文件夹名为“[Gmail]/sentmail
”。选择它,它就会工作
imap.select('[Gmail]/Sent Mail')
仅供参考,Gmail的系统文件夹如下:
收件箱
[Gmail]/所有邮件
[Gmail]/Drafts
[Gmail]/Sent-Mail
[Gmail]/Spam
[Gmail]/Starred
[Gmail]/Trash
imap.list('*', '*')
Gmail文件夹名称将根据用户选择的语言而变化。因此,以西班牙语为例:
“[Gmail]/All”邮件将是“[Gmail]/Todos”我发现以下内容很有帮助(ruby 2.0.0-p195) 不要使用
LIST”“*
。你们很多人最终会有数千个邮箱。使用列表“%
。如果您只对子文件夹/子文件夹感兴趣
,则可以执行类似imap.list''、'%/%'
等imap.list''、'%/%/'
仅列出父文件夹,深度为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.
请注意,这些文件夹名称是本地化的。你可以使用XLIST命令来获取文件夹类型。很漂亮,到处都在找,谢谢!如何选择所有邮件,而不考虑语言?发出
XLIST”“*
命令并选择返回的带有\AllMail
标记的邮件。此系统文件夹列表在Perl中也适用。谢谢。:-)漂亮,到处都在找这个,谢谢!那么,我如何选择所有邮件而不考虑语言?如何选择imap|U cli.list(''''.*')。选择{k | k[:attr]。包括?(:All)}。首先?
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.