« ピックアップ:iPhoneのストップウォッチが1000時間を超えるとどうなるか の記録的瞬間, なぜMicrosoft Officeファイルフォーマットはこんなにもややこしいのか, etc... | トップページ | ピックアップ:愚直にPDCA, 米国でWiiのリハビリへの応用が広がる, etc... »

2008-03-02

ruby で gmail (imap) にアクセスする練習

ruby で gmail (imap) にアクセスする練習をしてみた。
この作業をしていて gmail は
  http://mail.google.com/mail/feed/atom
で RSS チェックできることにも いまさらながら 気がついた。

以下のスクリプトの実行をするには、gem install tmail しておく必要があります。
$ cat gmaisubject.rb
# See http://mac-memo.blogspot.com/2008/01/rubygmail_30.html
#     http://www.notwork.org/ipr/article/serial10.html

require 'rubygems'
require 'net/imap'
require 'tmail'
require 'cgi'
require 'yaml'
require 'kconv'
require 'pp'

@KCODE = "utf8"

config = YAML.load_file("config.yaml")
username = config["user"]
password = config["pass"]

port=993
usessl=true

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|
imap.fetch(1..2, "ENVELOPE").each do |f|

  puts "=========================================================="
  messageNo = f.seqno
  date = f.attr["ENVELOPE"].date
  from_name = f.attr["ENVELOPE"].from[0].name
  subject = f.attr["ENVELOPE"].subject
  subject = "" if subject == nil
  print "#{messageNo}: #{date} #{from_name} #{Kconv.toutf8(subject)}\n"

  imap.fetch(messageNo, "RFC822").each do |m|
    mail = TMail::Mail.parse(m.attr["RFC822"])
    body = NKF::nkf('--sjis', mail.body)
    puts body.toutf8
  end
end

imap.disconnect

$ ruby gmailsubject.rb 
(実際の出力そのままではありません)
#<struct Net::IMAP::UntaggedResponse name="OK", data=#<struct Net::IMAP::ResponseText code=nil, text="Gimap ready for requests from 58.0.0.165 s38if458972rnb.0">, raw_data="* OK Gimap ready for requests from 58.0.0.165 s38if458972rnb.0¥r¥n">
==========================================================
1: Thu, 24 Nov 200* 23:08:35 -0800 (PST) =?ISO-2022-JP?B?R21haWwgGyRCJUEhPCVgGyhC?= Gmail へようこそ
Gmail へようこそ。 このたびは Gmail アカウントをご作成いただきありがとうございます。 Gmail は従来のウェブ
メールとはまったく異なるメール サービスです。 サービスのご利用にあたっては、次の情報をご参照ください。

==========================================================
2: Sat, 4 Mar 200* 01:44:56 -0800 (PST) mixi 変更メールアドレス

****** さん、こんにちは。

mixiからのお知らせです。以下のURLをクリックして登録内容の変更を完了させて
ください。

——————————————————————————

jruby ではなぜか動作しない、なぜ?
$ jruby gmailsubject.rb 
/Users/kato/work/www/jruby-1.0.3/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:26 warning: already initialized constant VERSION
/Users/kato/work/www/jruby-1.0.3/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:26 warning: already initialized constant OPENSSL_VERSION
/Users/kato/work/www/jruby-1.0.3/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:26warning: already initialized constant OPENSSL_VERSION_NUMBER
/Users/kato/work/www/jruby-1.0.3/lib/ruby/gems/1.8/gems/jruby-openssl-0.1.1/lib/openssl/digest.rb:42 warning: already initialized constant DSS
/Users/kato/work/www/jruby-1.0.3/lib/ruby/gems/1.8/gems/jruby-openssl-0.1.1/lib/openssl/digest.rb:42 warning: already initialized constant DSS1
/Users/kato/work/www/jruby-1.0.3/lib/ruby/gems/1.8/gems/jruby-openssl-0.1.1/lib/openssl/digest.rb:42 warning: already initialized constant MD2
/Users/kato/work/www/jruby-1.0.3/lib/ruby/gems/1.8/gems/jruby-openssl-0.1.1/lib/openssl/digest.rb:42 warning: already initialized constant MD4
/Users/kato/work/www/jruby-1.0.3/lib/ruby/gems/1.8/gems/jruby-openssl-0.1.1/lib/openssl/digest.rb:42 warning: already initialized constant MD5
/Users/kato/work/www/jruby-1.0.3/lib/ruby/gems/1.8/gems/jruby-openssl-0.1.1/lib/openssl/digest.rb:42 warning: already initialized constant MDC2
/Users/kato/work/www/jruby-1.0.3/lib/ruby/gems/1.8/gems/jruby-openssl-0.1.1/lib/openssl/digest.rb:42 warning: already initialized constant RIPEMD160
/Users/kato/work/www/jruby-1.0.3/lib/ruby/gems/1.8/gems/jruby-openssl-0.1.1/lib/openssl/digest.rb:42 warning: already initialized constant SHA
/Users/kato/work/www/jruby-1.0.3/lib/ruby/gems/1.8/gems/jruby-openssl-0.1.1/lib/openssl/digest.rb:42 warning: already initialized constant SHA1
// このあと ずっと wait 状態になってしまう...

20080302

|

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/184434/40337442

この記事へのトラックバック一覧です: ruby で gmail (imap) にアクセスする練習:

コメント

コメントを書く