RubyでIMAPを使ってGMailにアクセスする

投稿者 nanki 2010-05-20 19:29:00 GMT

だいたい以下のような感じになる。

password_from_keychainはOSXのkeychainからパスワードを取ってくるだけの関数。

GMailのTwitterフォルダ(follow通知メールが溜まる)の中から未読(UNSEEN)のメールを探してきて、ユーザ名とおぼしき部分を抜き出して出力、既読にする。

require 'net/imap'

# for Mac
def password_from_keychain(server, user)
  require 'open3'
  _, _, err = Open3.popen3("/usr/bin/security find-internet-password -s #{server} -a #{user} -r imap -g")

  if /^password: "(.*)"$/ === err.gets
    $1
  else
    nil
  end
end

SERVER = 'imap.gmail.com'
USER = 'nanki@example.com'
imap = Net::IMAP.new(SERVER, 993, true)

imap.login(USER, password_from_keychain(SERVER, USER))
imap.select("Twitter")

imap.search(%w(UNSEEN)).each do |msg|
  body = imap.fetch(msg, "BODY[TEXT]")[0].attr["BODY[TEXT]"]

  if /twitter.com\/([^?\/]+)/ === body
    puts "f #{$1}"
    imap.store(msg, "+FLAGS", [:Seen])
  end
end

This entry was posted on 2010-05-20 19:29:00 GMT and カテゴリ , . You can follow any response to this entry through the Atom feed. or a trackback from your own site.

タグ ,


トラックバック

トラックバックリンク:
http://blog.netswitch.jp/trackbacks?article_id=8663