ruby-gmail 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,10 @@
1
+ === 0.1.1 / 2010-05-11
2
+
3
+ * 1 minor fix
4
+
5
+ * Added explicit tmail dependency in gemspec
6
+ * Added better README tutorial content
7
+
1
8
  === 0.0.9 / 2010-04-17
2
9
 
3
10
  * 1 bugfix
@@ -41,32 +41,82 @@ A Rubyesque interface to Gmail, with all the tools you'll need. Search, read and
41
41
 
42
42
  ## Example Code:
43
43
 
44
+ ### 1) Require gmail
45
+
44
46
  require 'gmail'
45
- gmail = Gmail.new(username, password) do |g|
46
- read_count = g.inbox.count(:read) # => .count take the same arguments as .emails
47
- unread = g.inbox.emails(:unread)
48
- unread[0].archive!
49
- unread[1].delete!
50
- unread[2].move_to('FunStuff') # => labels and removes from inbox
51
- unread[3].message # => a MIME::Message, parsed from the email body
52
- unread[3].mark(:read)
53
- unread[3].message.attachments.length
54
- unread[4].label('FunStuff') # => Just adds the label 'FunStuff'
55
- unread[4].message.save_attachments_to('path/to/save/into')
56
- unread[5].message.attachments[0].save_to_file('path/to/save/into')
57
- unread[6].mark(:spam)
47
+
48
+ ### 2) Start an authenticated gmail session
49
+
50
+ # If you pass a block, the session will be passed into the block,
51
+ # and the session will be logged out after the block is executed.
52
+ gmail = Gmail.new(username, password)
53
+ # ...do things...
54
+ gmail.logout
55
+
56
+ Gmail.new(username, password) do |gmail|
57
+ # ...do things...
58
+ end
59
+
60
+ ### 3) Count and gather emails!
61
+
62
+ # Get counts for messages in the inbox
63
+ gmail.inbox.count
64
+ gmail.inbox.count(:unread)
65
+ gmail.inbox.count(:read)
66
+
67
+ # Count with some criteria
68
+ gmail.inbox.count(:after => Date.parse("2010-02-20"), :before => Date.parse("2010-03-20"))
69
+ gmail.inbox.count(:on => Date.parse("2010-04-15"))
70
+ gmail.inbox.count(:from => "myfriend@gmail.com")
71
+ gmail.inbox.count(:to => "directlytome@gmail.com")
72
+
73
+ # Combine flags and options
74
+ gmail.inbox.count(:unread, :from => "myboss@gmail.com")
75
+
76
+ # Labels work the same way as inbox
77
+ gmail.mailbox('Urgent').count
78
+
79
+ # Getting messages works the same way as counting: optional flag, and optional arguments
80
+ # Remember that every message in a conversation/thread will come as a separate message.
81
+ gmail.inbox.emails(:unread, :before => Date.parse("2010-04-20"), :from => "myboss@gmail.com")
82
+
83
+ ### 4) Work with emails!
84
+
85
+ # any news older than 4-20, mark as read and archive it...
86
+ gmail.inbox.emails(:before => Date.parse("2010-04-20"), :from => "news@nbcnews.com").each do |email|
87
+ email.mark(:read) # can also mark :unread or :spam
88
+ email.archive!
89
+ end
90
+
91
+ # delete emails from X...
92
+ gmail.inbox.emails(:from => "x-fiancé").each do |email|
93
+ email.delete!
94
+ end
95
+
96
+ # Save all attachments in the "Faxes" label to a folder
97
+ folder = "/where/ever"
98
+ gmail.mailbox("Faxes").emails.each do |email|
99
+ if !email.message.attachments.empty?
100
+ email.message.save_attachments_to(folder)
101
+ end
58
102
  end
59
103
 
60
- # Optionally use a block like above to have the gem automatically login and logout,
61
- # or just use it without a block after creating the object like below, and it will
62
- # automatically logout at_exit. The block method is recommended in order to limit
63
- # your signed-in session.
104
+ # Save just the first attachment from the newest unread email (assuming pdf)
105
+ # For #save_to_file:
106
+ # + provide a path - save to attachment filename in path
107
+ # + provide a filename - save to file specified
108
+ # + provide no arguments - save to attachment filename in current directory
109
+ email = gmail.inbox.emails(:unread).first
110
+ email.attachments[0].save_to_file("/path/to/location")
111
+
112
+ # Add a label to a message
113
+ email.label("Faxes")
114
+
115
+ # Or "move" the message to a label
116
+ email.move_to("Faxes")
117
+
118
+ ### 5) Create new emails!
64
119
 
65
- older = gmail.inbox.emails(:after => '2009-03-04', :before => '2009-03-15')
66
- todays_date = Time.parse(Time.now.strftime('%Y-%m-%d'))
67
- yesterday = gmail.inbox.emails(:after => (todays_date - 24*60*60), :before => todays_date)
68
- todays_unread = gmail.inbox.emails(:unread, :after => todays_date)
69
-
70
120
  new_email = MIME::Message.generate
71
121
  new_email.to "email@example.com"
72
122
  new_email.subject "Having fun in Puerto Rico!"
@@ -81,6 +131,7 @@ A Rubyesque interface to Gmail, with all the tools you'll need. Search, read and
81
131
  * ruby
82
132
  * net/smtp
83
133
  * net/imap
134
+ * tmail
84
135
  * shared-mime-info rubygem (for MIME-detection when attaching files)
85
136
 
86
137
  ## Install
data/Rakefile CHANGED
@@ -13,6 +13,7 @@ begin
13
13
  gem.authors = ["BehindLogic"]
14
14
  gem.post_install_message = "\n\033[34mIf ruby-gmail saves you TWO hours of work, want to compensate me for, like, a half-hour?\nSupport me in making new and better gems:\033[0m \033[31;4mhttp://pledgie.com/campaigns/7087\033[0m\n\n"
15
15
  gem.add_dependency('shared-mime-info', '>= 0')
16
+ gem.add_dependency('tmail', '>= 1.2.3')
16
17
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
18
  end
18
19
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ruby-gmail}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["BehindLogic"]
12
- s.date = %q{2010-05-05}
12
+ s.date = %q{2010-05-11}
13
13
  s.description = %q{A Rubyesque interface to Gmail, with all the tools you'll need. Search, read and send multipart emails; archive, mark as read/unread, delete emails; and manage labels.}
14
14
  s.email = %q{gems@behindlogic.com}
15
15
  s.extra_rdoc_files = [
@@ -57,11 +57,14 @@ Support me in making new and better gems: http://pledgie.com/campaign
57
57
 
58
58
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
59
59
  s.add_runtime_dependency(%q<shared-mime-info>, [">= 0"])
60
+ s.add_runtime_dependency(%q<tmail>, [">= 1.2.3"])
60
61
  else
61
62
  s.add_dependency(%q<shared-mime-info>, [">= 0"])
63
+ s.add_dependency(%q<tmail>, [">= 1.2.3"])
62
64
  end
63
65
  else
64
66
  s.add_dependency(%q<shared-mime-info>, [">= 0"])
67
+ s.add_dependency(%q<tmail>, [">= 1.2.3"])
65
68
  end
66
69
  end
67
70
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - BehindLogic
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-05 00:00:00 -04:00
17
+ date: 2010-05-11 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -29,6 +29,20 @@ dependencies:
29
29
  version: "0"
30
30
  type: :runtime
31
31
  version_requirements: *id001
32
+ - !ruby/object:Gem::Dependency
33
+ name: tmail
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ segments:
40
+ - 1
41
+ - 2
42
+ - 3
43
+ version: 1.2.3
44
+ type: :runtime
45
+ version_requirements: *id002
32
46
  description: A Rubyesque interface to Gmail, with all the tools you'll need. Search, read and send multipart emails; archive, mark as read/unread, delete emails; and manage labels.
33
47
  email: gems@behindlogic.com
34
48
  executables: []