net/imapでGMailのメールを取得




自動でfollowするように、GMailに届いたfollow通知からユーザ名を取り出してみる。IMAPでやってみた版。

参考:katoy: cocolog: ruby で gmail (imap) にアクセスする練習

require 'net/imap'

followers = []
username = "hoge"
password = "hogehoge"

port = 993
usessl = true

begin
imap = Net::IMAP.new("imap.gmail.com", port, usessl)
p imap.greeting
imap.login(username, password)
imap.examine("inbox")
imap.fetch(1..-1, "ENVELOPE").each do |f|
messageNo = f.seqno
subject = f.attr["ENVELOPE"].subject
to_mailbox = f.attr["ENVELOPE"].to[0].mailbox
if to_mailbox == "hoge+bot" && # To:がhoge+bot@gmail.comのものを取り出す
/is now following you on Twitter/ =~ subject
imap.fetch(messageNo, "RFC822").each do |m|
# ユーザ名を得る
if /http:\/\/twitter\.com\/(\w+)/ =~ m.attr["RFC822"]
p $1
followers << $1
end
end
end
end
followers.each { |u|
follow(u)
}
p "success"
rescue
p "failed"
end


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です