rubyでimap server (dovecot)とおしゃべりしてみた

2017年9月18日

ruby で imap server(dovecot)とおしゃべりしてみたメモです。一部loginとpasswordは置き換えてあります。

未読(Unseen)のメールを既読(Seen)にしてみました。

irb(main):001:0> require 'net/imap'
=> true
irb(main):002:0> imap = Net::IMAP.new("localhost")
=> #, @host="localhost", @port=143, @tag_prefix="RUBY", @tagno=0, @parser=#, @sock=#, @usessl=false, @responses={}, @tagged_responses={}, @response_handlers=[], @tagged_response_arrival=#, @cond=#>>, @continuation_request_arrival=#, @cond=#>>, @idle_done_cond=nil, @logout_command_tag=nil, @debug_output_bol=true, @exception=nil, @greeting=#, text=" Dovecot ready.">, raw_data="* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=PLAIN] Dovecot ready.\r\n">, @client_thread=#, @receiver_thread=#, @receiver_thread_terminating=false>
irb(main):003:0> imap.login("fuga", "password")
=> #, text=" Logged in">, raw_data="RUBY0001 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE] Logged in\r\n">
irb(main):004:0> imap.select("inbox.inbox-all")
=> #, text=" Select completed.">, raw_data="RUBY0002 OK [READ-WRITE] Select completed.\r\n">
irb(main):005:0> imap.search("unseen")
=> [12]
irb(main):006:0> imap.select("inbox.spam")
=> #, text=" Select completed.">, raw_data="RUBY0004 OK [READ-WRITE] Select completed.\r\n">
irb(main):007:0> imap.search("unseen")
=> []
irb(main):008:0> imap.select("inbox.Log.Cron")
=> #, text=" Select completed.">, raw_data="RUBY0006 OK [READ-WRITE] Select completed.\r\n">
irb(main):009:0> imap.search("unseen")
=> [105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264]
irb(main):010:0> imap.store(105, "+FLAGS", [:Seen])
=> [#[:Seen, "NonJunk"]}>]
irb(main):011:0> imap.fetch(105, "FLAGS")
=> [#[:Seen, "NonJunk"]}>]
irb(main):012:0> imap.fetch(106, "FLAGS")
=> [#["NonJunk"]}>]
irb(main):013:0> imap.fetch(104, "FLAGS")
=> [#[:Seen]}>]
irb(main):014:0> imap.select("INBOX")
=> #, text=" Select completed.">, raw_data="RUBY0012 OK [READ-WRITE] Select completed.\r\n">
irb(main):015:0> imap.fetch(1, "FLAGS")
=> [#[:Seen]}>]
irb(main):016:0> 

Ruby, メール

Posted by Gordius