2012年6月22日金曜日

溜まっているGmailを一気に既読にするRubyスクリプト


未読メールって、すぐに溜まりません?
私はいくつかのGmailアカウントを使い分けているんですが、 特にサービス登録用のアカウントにメールが溜まって溜まって…。

で、ちょっと調べてみたのですが、IMAPメールの処理がRubyで簡単にできそうだったので、あまり経験ありませんがRubyで書いてみました。 

require 'net/imap'
require 'kconv'
 
def mail_check(account, password)
    imap = Net::IMAP.new('imap.gmail.com', 993, true)
    imap.login(account, password)
    imap.select(Net::IMAP.encode_utf7("INBOX"))
 
    ids = imap.search(["UNSEEN"])
    if ids.length > 0 then
        imap.fetch(ids, ["ENVELOPE"]).each {|mail|
        if mail.attr["ENVELOPE"].subject.nil? then
            next
        else
            puts(mail.attr["ENVELOPE"].subject.toutf8)
                imap.store(ids, '+FLAGS', [:Seen] )
        end
        }
    end
end
 
mail_check("ユーザ名", "パスワード")

未読(UNSEEN)メールを読み込み、既読を示すSEENフラグを立てるだけのスクリプトになります。
進行状況が分からないとやきもきしてしまうので、処理したメールのタイトルも表示するようにしました。
#ちなみに、imap.store(ids, '-FLAGS', [:Seen] )とすると、既読メールを未読に変更することができます。
#既読メールが一気に未読になっていくのは、なかなか見ない光景なので楽しいです。

かなり溜め込んでいたのでそこそこ時間がかかっちゃったのですが、一気に既読になってすっきりしました。
意外と簡単にIMAPメールって操作できるんですねー。

0 件のコメント:

コメントを投稿