From: "Berger, Daniel" Date: 2005-08-16T23:27:16+09:00 Subject: Re: [ANN] gmailer 0.0.1 (plain text) > -----Original Message----- > From: Park Heesob [mailto:phasis@bcline.com] > Sent: Tuesday, August 16, 2005 8:01 AM > To: ruby-talk ML > Subject: [ANN] gmailer 0.0.1 (plain text) > > > Hi, > > Sorry for previous encoding message. > > I'm happy to announce first version of GMailer, a class for > interface to > Google's webmail service. > > You can fetching gmails > > require "gmailer" > > gmail = GMailer.new > gmail.setLoginInfo(name, pwd) > if gmail.connect > gmail.fetchBox(GM_LABEL, "my_label", 0) > snapshot = gmail.getSnapshot(GM_LABEL) > if snapshot > puts "Total # of conversations of my_label = " + > snapshot.box_total.to_s > > end > gmail.disconnect > end > > Sending new gmails > > require "gmailer" > > gmail = GMailer.new > gmail.setLoginInfo(name, pwd) > if gmail.connect > to = "who@what.com, my_friend@his_company.com, god@heaven.org" > cc = "foo@bar.com" > subj = "Hello There!" > message = "Hi...\n\nBlah blah blah~..." > attachments = ["./my_pic.jpg", "./my_cv.txt"] > gmail.send(to, subj, message, cc, '','', '', > attachments, false, '') > end > > Or playing around with contact list > > require "gmailer" > > gmail = GMailer.new > gmail.setLoginInfo(name, pwd) > if gmail.connect > gmail.fetchBox(GM_CONTACT, "freq", 0) > snapshot = gmail.getSnapshot(GM_CONTACT) > puts "Your frequently used addresses:" > snapshot.contacts.each { |item| > puts "Name: " + item["name"] + ", Email: " + item["email"] > } > end > > You can find out more about GMailer at: > > http://rubyforge.org/projects/gmailutils Some API suggestions: First, get rid of camel case! That, or at least provide aliases, e.g. gmail.fetch_box vs gmail.fetchBox. Second, since you must call setLoginInfo in order to do just about anything, then I would recommend allowing users to pass that information to the constructor as a shortcut. So, your constructor would look like this: def initialize(name, password, charset='UTF-8') ... setLoginInfo(name, password) end Let's folks skip a step. :) Regards, Dan PS - I'll post these suggestions on the project page as well.