# Gmailer

**URL:** <https://www.ruby-forum.com/t/gmailer/128504>\
**Category:** Rails\
**Created:** [February 8, 2008, 7:37am UTC](https://www.ruby-forum.com/t/gmailer/128504 "2008-02-08T07:37:31Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![shweta\_kadam](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/53a042/32.png) [@shweta\_kadam](https://www.ruby-forum.com/u/shweta_kadam)\
**Post date:** [February 8, 2008, 7:37am UTC](https://www.ruby-forum.com/t/gmailer/128504/1 "2008-02-08T07:37:31Z")

</div>

hi all,  
i want to know how to use gmailer in rails

---

<div class="post-metadata">

**Author:** ![shweta\_kadam](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/53a042/32.png) [@shweta\_kadam](https://www.ruby-forum.com/u/shweta_kadam)\
**Post date:** [February 8, 2008, 11:27am UTC](https://www.ruby-forum.com/t/gmailer/128504/2 "2008-02-08T11:27:13Z")

</div>

sudo apt-get install libopenssl-ruby  
gem install GMailer

It also req. Python library  
You can use as : foo = GMailer.connect(“cpjolicoeur”, “mypassword”)  
or  
This is procedure :

require ‘gmailer’

GMailer.connect(name,pwd) do |g|  
#fetch  
g.messages(:label=\>“my\_label”) do |ml|  
puts "Total # of conversations of my\_label = " + ml.total.to\_s  
end

#get contact  
g.fetch(:contact=\>“freq”).each do |item|  
puts “Name: #{item[‘name’]} Email: #{item[‘email’]}”  
end

#send message

# ‘From’ default [gmail.com](http://gmail.com) account

g.send(  
:to =\> “removed\_email\_address@domain.invalid, my\_friend@his\_company.com,  
removed\_email\_address@domain.invalid”,  
:cc =\> “removed\_email\_address@domain.invalid”,  
: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 =\> “removed\_email\_address@domain.invalid”,  
:to =\> “removed\_email\_address@domain.invalid, my\_friend@his\_company.com,  
removed\_email\_address@domain.invalid”,  
:cc =\> “removed\_email\_address@domain.invalid”,  
: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=\>‘removed\_email\_address@domain.invalid’,  
:snippets=\>true,  
:display\_name=\>‘Display Name’)

# get preference

pref = g.preference  
puts “Language:#{pref[‘display\_language’]}, 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.report\_not\_spam(msgid)

#move a message to trash  
g.trash(msgid)

#move a message from trash to inbox  
g.untrash(msgid)

#delete a trash message forever  
g.delete\_trash(msgid)

#delete a spam message forever  
g.delete\_spam(msgid)

#delete a message forever  
g.delete\_message(msgid)

#show original message  
g.show original(msgid)

#get labels  
labels = g.labels

#get messages  
g.messages(:label=\>labels[0]).each {|m|  
puts “Subject: #{m.subject} / Snippet: #{m.snippet}”  
}

#get inbox messages  
g.messages(:standard=\>‘inbox’).each {|m|  
puts “Subject: #{m.subject} / Snippet: #{m.snippet}”  
}

# fetch with filter :read or :star

g.messages(:standard=\>‘all’,:read=\>false).each {|msg|  
# operations on the message  
msg.apply\_star  
msg.apply\_label(label)  
msg.trash

```
 puts "subject: " + msg.subject
 puts "from: " + msg.sender
 puts msg.body
 puts msg.original

```

}

end

On Feb 8, 11:37 am, Shweta K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![shweta\_kadam](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/53a042/32.png) [@shweta\_kadam](https://www.ruby-forum.com/u/shweta_kadam)\
**Post date:** [February 8, 2008, 11:27am UTC](https://www.ruby-forum.com/t/gmailer/128504/3 "2008-02-08T11:27:14Z")

</div>

sudo apt-get install libopenssl-ruby  
gem install GMailer

It also req. Python library  
You can use as : foo = GMailer.connect(“cpjolicoeur”, “mypassword”)  
or  
This is procedure :

require ‘gmailer’

GMailer.connect(name,pwd) do |g|  
#fetch  
g.messages(:label=\>“my\_label”) do |ml|  
puts "Total # of conversations of my\_label = " + ml.total.to\_s  
end

#get contact  
g.fetch(:contact=\>“freq”).each do |item|  
puts “Name: #{item[‘name’]} Email: #{item[‘email’]}”  
end

#send message

# ‘From’ default [gmail.com](http://gmail.com) account

g.send(  
:to =\> “removed\_email\_address@domain.invalid, my\_friend@his\_company.com,  
removed\_email\_address@domain.invalid”,  
:cc =\> “removed\_email\_address@domain.invalid”,  
: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 =\> “removed\_email\_address@domain.invalid”,  
:to =\> “removed\_email\_address@domain.invalid, my\_friend@his\_company.com,  
removed\_email\_address@domain.invalid”,  
:cc =\> “removed\_email\_address@domain.invalid”,  
: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=\>‘removed\_email\_address@domain.invalid’,  
:snippets=\>true,  
:display\_name=\>‘Display Name’)

# get preference

pref = g.preference  
puts “Language:#{pref[‘display\_language’]}, 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.report\_not\_spam(msgid)

#move a message to trash  
g.trash(msgid)

#move a message from trash to inbox  
g.untrash(msgid)

#delete a trash message forever  
g.delete\_trash(msgid)

#delete a spam message forever  
g.delete\_spam(msgid)

#delete a message forever  
g.delete\_message(msgid)

#show original message  
g.show original(msgid)

#get labels  
labels = g.labels

#get messages  
g.messages(:label=\>labels[0]).each {|m|  
puts “Subject: #{m.subject} / Snippet: #{m.snippet}”  
}

#get inbox messages  
g.messages(:standard=\>‘inbox’).each {|m|  
puts “Subject: #{m.subject} / Snippet: #{m.snippet}”  
}

# fetch with filter :read or :star

g.messages(:standard=\>‘all’,:read=\>false).each {|msg|  
# operations on the message  
msg.apply\_star  
msg.apply\_label(label)  
msg.trash

```
 puts "subject: " + msg.subject
 puts "from: " + msg.sender
 puts msg.body
 puts msg.original

```

}

end

On Feb 8, 11:37 am, Shweta K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![shweta\_kadam](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/53a042/32.png) [@shweta\_kadam](https://www.ruby-forum.com/u/shweta_kadam)\
**Post date:** [February 10, 2009, 1:40pm UTC](https://www.ruby-forum.com/t/gmailer/128504/4 "2009-02-10T13:40:46Z")

</div>

I have installed gmailer gem.but i got some error when i tried to  
connect  
my gmail account.i need to get the inbox messages from my gmail  
account.but i can’t.plzz help me.i got “You have a nil object when you  
didn’t expect it!  
The error occurred while evaluating nil.connection= error”.i got tis  
eror when i used g.messages line in my code.my code is

require ‘rubygems’  
require ‘gmailer’

class FirstController \< ApplicationController

def index  
count=0  
puts “lllllllllll”  
if GMailer.connect(‘[myaccountgmail.com](http://myaccountgmail.com)’, ‘password’)  
puts “CONNECTED”  
begin  
GMailer.connect(‘removed\_email\_address@domain.invalid’, ‘password’) do |g|  
puts “GGGGGGGG enter”  
puts g.inspect  
g.messages(:label =\> “inbox”) do |ml|  
ml.each\_msg do |conversation|  
Email.create!(  
:title =\> conversation.subject,  
:text =\> conversation.body,  
:sender =\> conversation.sender,  
:sender\_email =\> conversation.sender\_email,  
:reply\_email =\> (conversation.reply\_email.blank?) ?  
conversation.sender\_email : conversation.reply\_email  
)  
count += 1  
puts conversation.archive  
end  
end  
end #connect  
rescue Exception =\> e  
puts e  
end  
end  
count  
end
