This is the 0.0.8 release of GMailer by Park Heesob.
This is a class library for interface to Google's webmail service.
What is GMailer?
-----------------
GMailer can fetch mails, save attachements, get cotact lists, invite someone
or send message with file attachments. It provides edit methods for labels,
preferece settings, starring and archiving message.
What's new in this release?
---------------------------
Rename is_connected method to connected?
Add support for the new feature 'Send mail as'. If you have multiple
verified
"Send mail as:" email addresses, you can choose one 'From:' email address.
Refer to http://gmail.google.com/support/bin/answer.py?answer=20616
Thanks Daniel Schierbeck and Michel Martens!
How to use GMailer?
-----------------------
Sample usage:
GMailer.connect(name,pwd) do |g|
#fetch
g.fetch(:label=>"my_label") {|s|
puts "Total # of conversations of my_label = " + s.box_total.to_s
}
#get contact
g.fetch(:contact=>"freq").each do |item|
puts "Name: #{item['name']} Email: #{item['email']}"
end
#send message
# 'From' default gmail.com account
g.send(
:to => "w...@what.com, my_friend@his_company.com, g...@heaven.org"
:cc => "f...@bar.com"
:subject => "Hello There!",
:body => "Hi...\n\nBlah blah blah~~...",
:files => ["./my_pic.jpg", "./my_cv.txt"])
# multiple verified email addresses and choose one 'From:' email address
g.send(
:from => "veri...@email.com",
:to => "w...@what.com, my_friend@his_company.com, g...@heaven.org"
:cc => "f...@bar.com"
:subject => "Hello There!",
:body => "Hi...\n\nBlah blah blah~~...",
:files => ["./my_pic.jpg", "./my_cv.txt"])
# update_preference
g.update_preference(:max_page_size=>50,
:keyboard_shortcuts=>true,
:indicators=>true,
:display_language=>'en',
:signature=>'This is a signature',
:reply_to=>'ret...@foo.bar',
:snippets=>true,
:display_name=>'Display Name')
# get preference
pref = g.preference
puts "Display language:#{pref['display_language']}, Max Page
Size:#{pref['max_page_size']}"
#creating new labels
g.create_label('label_name')
#renaming existing labels
g.rename_label('label_name','renamed_label')
#deleting labels
g.delete_label('label_name')
#applying a label to a message
g.apply_label(msgid,'label_name')
#removing a label from a message
g.remove_label(msgid,'label_name')
#apply star to a message
g.apply_star(msgid)
#remove star from a message
g.remove_star(msgid)
#archive a message
g.archive(msgid)
#unarchive a message
g.unarchive(msgid)
#mark a message as read
g.mark_read(msgid)
#mark a message as unread
g.mark_unread(msgid)
#report a message as not spam
g.report_spam(msgid)
#report a message as not spam
g.not_spam(msgid)
#move a message to trash
g.trash_in(msgid)
#move a message from trash to inbox
g.trash_out(msgid)
#delete a trash message forever
g.delete_trash(msgid)
#delete a spam message forever
g.delete_spam(msgid)
#get labels
labels = g.labels
#get messages
g.messages(:label=>labels[0]).each {|m|
puts "Subject: #{m['subject']} / Snippet: #{m['snippet']}" if m['new?']
}
#get inbox messages
g.messages(:standard=>'inbox').each {|m|
puts "Subject: #{m['subject']} / Snippet: #{m['snippet']}" if m['new?']
}
end
Project:: http://rubyforge.org/projects/gmailutils/
Bugs:: http://rubyforge.org/tracker/?group_id=869
Document:: http://rubyforge.org/docman/?group_id=869
Download:: http://rubyforge.org/frs/?group_id=869
How do I get GMailer?
----------------------
If you have RubyGems installed:
$ sudo gem install gmailer # in *NIX
> gem install gmailer # in Windows
Or not, download the latest release from
http://rubyforge.org/frs/?group_id=869
and run install.rb
Cheers,
Park Heesob
Cheers,
Daniel
Module GMailer
# the main class.
class Connection
# returns the messages that match the filters
# or all messages if no filter is provided
def messages (filters = {}); end
# returns all labels
def labels; end
# returns the label that has the name "name"
# as a Label object
def label (name); end
# etc etc
end
# a list of messages. should be sortable and searchable.
class MessageList; end
# a single message
class Message
attr_reader :subject, :body, :to, :from, :date
# applies a label to the message.
# can take either a string or a Label object as argument
def apply_label (label); end
def remove_label; end
def archive; end
def unarchive; end
def archived?; end
def mark_read; end
def mark_unread; end
def read?; end
def report_spam; end
def report_not_spam; end
def spam?; end
def trash; end
def untrash; end
# etc etc
end
class Label
# you get the picture
end
def connect (*args, &block)
Connection.new(*args, &block)
end
end
GMailer::connect(username, password) do |gmail|
gmail.messages(:unread).each do |msg|
puts "subject: " + msg.subject
puts "from: " + msg.from
end
end
I am having some troubles getting it to work. I installed gmailer
v0.8 but I can't figure out how to "require" it. Am I missing
something obvious?
$ gem list | grep gmail
gmailer (0.0.8)
$ ruby --version
ruby 1.8.2 (2004-12-25) [powerpc-darwin7.8.0]
$ gem --version
0.8.10
$ irb
irb(main):001:0> require "GMail"
LoadError: No such file to load -- GMail
from (irb):1:in `require'
from (irb):1
irb(main):002:0> require "GMailer"
LoadError: No such file to load -- GMailer
from (irb):2:in `require'
from (irb):2
irb(main):003:0> require "gmailer"
LoadError: No such file to load -- gmailer
from (irb):3:in `require'
from (irb):3
...
def GMailer.connect (...)
...
perhaps try:
>> require 'rubygems'
>> require_gem 'gmailer'
cheers,
Mark
NameError: uninitialized constant GMailer
from (irb):9
Thanks for suggestions.
I will try to satisfy you in the next release.:)
In the mean time, you can use this for fetching each message content:
g.messages(:standard=>'all').each {|m|
puts "ID: #{m['id']} Subject: #{m['subject']} / Snippet:
#{m['snippet']}"
g.fetch(:conversation=>m['id']).conv.each {|c|
puts "From: #{c['sender']} #{c['sender_email']}"
puts "Subject: #{c['subject']}"
puts "Full Message Body: #{c['body']}"
}
}
Regards,
Park Heesob