gmail 0.4.2 → 0.5.0

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.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +13 -0
  4. data/.rubocop_todo.yml +239 -0
  5. data/.travis.yml +19 -0
  6. data/CHANGELOG.md +75 -18
  7. data/Gemfile +1 -1
  8. data/README.md +214 -131
  9. data/Rakefile +11 -0
  10. data/gmail.gemspec +8 -8
  11. data/lib/gmail.rb +31 -18
  12. data/lib/gmail/client.rb +11 -7
  13. data/lib/gmail/client/base.rb +52 -48
  14. data/lib/gmail/client/plain.rb +9 -5
  15. data/lib/gmail/client/xoauth.rb +23 -6
  16. data/lib/gmail/client/xoauth2.rb +39 -0
  17. data/lib/gmail/imap_extensions.rb +150 -0
  18. data/lib/gmail/labels.rb +33 -16
  19. data/lib/gmail/mailbox.rb +60 -42
  20. data/lib/gmail/message.rb +142 -101
  21. data/lib/gmail/version.rb +2 -2
  22. data/spec/account.yml.obfus +2 -0
  23. data/spec/gmail/client/base_spec.rb +5 -0
  24. data/spec/gmail/client/plain_spec.rb +168 -0
  25. data/spec/gmail/client/xoauth2_spec.rb +186 -0
  26. data/spec/gmail/client/xoauth_spec.rb +5 -0
  27. data/spec/gmail/client_spec.rb +5 -0
  28. data/spec/gmail/imap_extensions_spec.rb +12 -0
  29. data/spec/gmail/labels_spec.rb +18 -0
  30. data/spec/{mailbox_spec.rb → gmail/mailbox_spec.rb} +14 -14
  31. data/spec/gmail/message_spec.rb +181 -0
  32. data/spec/gmail_spec.rb +21 -21
  33. data/spec/recordings/gmail/_new_connects_with_client_and_give_it_context_when_block_given.yml +28 -0
  34. data/spec/recordings/gmail/_new_connects_with_gmail_service_and_return_valid_connection_object.yml +28 -0
  35. data/spec/recordings/gmail/_new_does_not_raise_error_when_couldn_t_connect_with_given_account.yml +13 -0
  36. data/spec/recordings/gmail/_new_raises_error_when_couldn_t_connect_with_given_account.yml +13 -0
  37. data/spec/recordings/gmail_client_plain/instance/_connection_automatically_logs_in_to_gmail_account_when_it_s_called.yml +42 -0
  38. data/spec/recordings/gmail_client_plain/instance/delivers_inline_composed_email.yml +42 -0
  39. data/spec/recordings/gmail_client_plain/instance/does_not_log_in_when_given_gmail_account_is_invalid.yml +13 -0
  40. data/spec/recordings/gmail_client_plain/instance/does_not_raise_error_even_though_gmail_account_is_invalid.yml +13 -0
  41. data/spec/recordings/gmail_client_plain/instance/labels/checks_if_there_is_given_label_defined.yml +196 -0
  42. data/spec/recordings/gmail_client_plain/instance/labels/creates_given_label.yml +151 -0
  43. data/spec/recordings/gmail_client_plain/instance/labels/removes_existing_label.yml +146 -0
  44. data/spec/recordings/gmail_client_plain/instance/labels/returns_list_of_all_available_labels.yml +113 -0
  45. data/spec/recordings/gmail_client_plain/instance/properly_logs_in_to_valid_gmail_account.yml +42 -0
  46. data/spec/recordings/gmail_client_plain/instance/properly_logs_out_from_gmail.yml +42 -0
  47. data/spec/recordings/gmail_client_plain/instance/properly_switches_to_given_mailbox.yml +109 -0
  48. data/spec/recordings/gmail_client_plain/instance/properly_switches_to_given_mailbox_using_block_style.yml +109 -0
  49. data/spec/recordings/gmail_client_plain/instance/raises_error_when_given_gmail_account_is_invalid_and_errors_enabled.yml +13 -0
  50. data/spec/recordings/gmail_client_xo_auth2/instance/does_not_log_in_when_given_gmail_account_is_invalid.yml +13 -0
  51. data/spec/recordings/gmail_client_xo_auth2/instance/labels/checks_if_there_is_given_label_defined.yml +27 -0
  52. data/spec/recordings/gmail_client_xo_auth2/instance/labels/creates_given_label.yml +39 -0
  53. data/spec/recordings/gmail_client_xo_auth2/instance/labels/removes_existing_label.yml +39 -0
  54. data/spec/recordings/gmail_client_xo_auth2/instance/labels/returns_list_of_all_available_labels.yml +27 -0
  55. data/spec/recordings/gmail_client_xo_auth2/instance/properly_logs_in_to_valid_gmail_account.yml +15 -0
  56. data/spec/recordings/gmail_client_xo_auth2/instance/properly_logs_out_from_gmail.yml +15 -0
  57. data/spec/recordings/gmail_client_xo_auth2/instance/properly_switches_to_given_mailbox.yml +40 -0
  58. data/spec/recordings/gmail_client_xo_auth2/instance/properly_switches_to_given_mailbox_using_block_style.yml +40 -0
  59. data/spec/recordings/gmail_client_xo_auth2/instance/raises_error_when_given_gmail_account_is_invalid_and_errors_enabled.yml +13 -0
  60. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/all/localizes_into_the_appropriate_label.yml +116 -0
  61. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/drafts/localizes_into_the_appropriate_label.yml +116 -0
  62. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/flagged/localizes_into_the_appropriate_label.yml +116 -0
  63. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/important/localizes_into_the_appropriate_label.yml +116 -0
  64. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/inbox/localizes_into_the_appropriate_label.yml +42 -0
  65. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/junk/localizes_into_the_appropriate_label.yml +116 -0
  66. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/sent/localizes_into_the_appropriate_label.yml +116 -0
  67. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/trash/localizes_into_the_appropriate_label.yml +116 -0
  68. data/spec/recordings/gmail_mailbox/instance/counts_all_emails.yml +277 -0
  69. data/spec/recordings/gmail_mailbox/instance/finds_messages.yml +586 -0
  70. data/spec/recordings/gmail_mailbox/on_initialize/sets_client_and_name.yml +42 -0
  71. data/spec/recordings/gmail_mailbox/on_initialize/works_in_inbox_by_default.yml +42 -0
  72. data/spec/recordings/gmail_message/initialize/sets_prefetch_attrs.yml +578 -0
  73. data/spec/recordings/gmail_message/initialize/sets_uid_and_mailbox.yml +580 -0
  74. data/spec/recordings/gmail_message/instance_methods/deletes_itself.yml +637 -0
  75. data/spec/recordings/gmail_message/instance_methods/marks_itself_read.yml +682 -0
  76. data/spec/recordings/gmail_message/instance_methods/marks_itself_unread.yml +686 -0
  77. data/spec/recordings/gmail_message/instance_methods/moves_from_one_tag_to_other.yml +862 -0
  78. data/spec/recordings/gmail_message/instance_methods/removes_a_given_label.yml +776 -0
  79. data/spec/recordings/gmail_message/instance_methods/removes_a_given_label_with_old_method.yml +776 -0
  80. data/spec/recordings/gmail_message/instance_methods/sets_given_label.yml +690 -0
  81. data/spec/recordings/gmail_message/instance_methods/sets_given_label_with_old_method.yml +691 -0
  82. data/spec/spec_helper.rb +34 -10
  83. data/spec/support/imap_mock.rb +129 -0
  84. data/spec/support/obfuscation.rb +52 -0
  85. metadata +79 -30
  86. data/TODO.md +0 -12
  87. data/lib/gmail/client/imap_extensions.rb +0 -54
  88. data/spec/client_spec.rb +0 -178
  89. data/spec/message_spec.rb +0 -51
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d3e753fcd22946f3ad280435f97d76e1eb4ec7e0
4
- data.tar.gz: 4bfe8802c7750714025da3b52a1e15bfdc46ea02
3
+ metadata.gz: 90b7ae4b3b4c3666bc7232be016a91ae05a7e1bc
4
+ data.tar.gz: b86c8c8d608a6c5a7166ae549c159e2c55d4bfb1
5
5
  SHA512:
6
- metadata.gz: 084f0398746da01275b728cee3a700c02c6f43a8fd67e6e3826da737c51547cf1a547cae8073adf48f0c582df66a80b98025c3b686d4100ef478d76d8b31df1c
7
- data.tar.gz: 5a7c3721ed3e94d74ea092d756d2826b63496c8f4ec5f8abdcda1ed6b7ea6c441ba602a9b089e40e2ca11facbfc487733c292d97961d6f30cce9120b1c5f9e99
6
+ metadata.gz: 8ccedc507d735bc696cbfbe62846b83245259ecade924e70df330d5df797bd59a8bd21a69a72acc9f8dbe00b311b2ef1e766972e02d903e4f29638bfc2b27a0a
7
+ data.tar.gz: 99dcd8b0ddfdd958196f4bba9d19721a54db6bf8c9b96359d2dfcdd04e2e320a3aacf3971c631831d2ba191873a2405b729639dfa29dd2c84e89ca08b5efa80e
data/.gitignore CHANGED
@@ -18,6 +18,7 @@ coverage
18
18
  rdoc
19
19
  pkg
20
20
  Gemfile.lock
21
+ *.gem
21
22
 
22
23
  ## PROJECT::SPECIFIC
23
24
  *.rdb
@@ -0,0 +1,13 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ Style/HashSyntax:
4
+ EnforcedStyle: hash_rockets
5
+ SupportedStyles:
6
+ - ruby19
7
+ - hash_rockets
8
+
9
+ Style/StringLiterals:
10
+ EnforcedStyle: single_quotes
11
+ SupportedStyles:
12
+ - single_quotes
13
+ - double_quotes
@@ -0,0 +1,239 @@
1
+ # This configuration was generated by `rubocop --auto-gen-config`
2
+ # on 2015-01-19 09:48:24 -0500 using RuboCop version 0.28.0.
3
+ # The point is for the user to remove these configuration records
4
+ # one by one as the offenses are removed from the code base.
5
+ # Note that changes in the inspected code, or installation of new
6
+ # versions of RuboCop, may require this file to be generated again.
7
+
8
+ # Offense count: 1
9
+ # Configuration parameters: AllowSafeAssignment.
10
+ Lint/AssignmentInCondition:
11
+ Enabled: false
12
+
13
+ # Offense count: 1
14
+ # Cop supports --auto-correct.
15
+ Lint/BlockAlignment:
16
+ Enabled: false
17
+
18
+ # Offense count: 1
19
+ Lint/LiteralInCondition:
20
+ Enabled: false
21
+
22
+ # Offense count: 2
23
+ Lint/RescueException:
24
+ Enabled: false
25
+
26
+ # Offense count: 1
27
+ Lint/ShadowingOuterLocalVariable:
28
+ Enabled: false
29
+
30
+ # Offense count: 1
31
+ # Cop supports --auto-correct.
32
+ Lint/StringConversionInInterpolation:
33
+ Enabled: false
34
+
35
+ # Offense count: 1
36
+ Lint/UnderscorePrefixedVariableName:
37
+ Enabled: false
38
+
39
+ # Offense count: 2
40
+ # Cop supports --auto-correct.
41
+ Lint/UnusedBlockArgument:
42
+ Enabled: false
43
+
44
+ # Offense count: 7
45
+ # Cop supports --auto-correct.
46
+ Lint/UnusedMethodArgument:
47
+ Enabled: false
48
+
49
+ # Offense count: 2
50
+ Lint/UselessAssignment:
51
+ Enabled: false
52
+
53
+ # Offense count: 12
54
+ Lint/Void:
55
+ Enabled: false
56
+
57
+ # Offense count: 10
58
+ Metrics/AbcSize:
59
+ Max: 1000
60
+
61
+ # Offense count: 2
62
+ # Configuration parameters: CountComments.
63
+ Metrics/ClassLength:
64
+ Max: 1000
65
+
66
+ # Offense count: 5
67
+ Metrics/CyclomaticComplexity:
68
+ Max: 1000
69
+
70
+ # Offense count: 67
71
+ # Configuration parameters: AllowURI, URISchemes.
72
+ Metrics/LineLength:
73
+ Max: 1000
74
+
75
+ # Offense count: 12
76
+ # Configuration parameters: CountComments.
77
+ Metrics/MethodLength:
78
+ Max: 1000
79
+
80
+ # Offense count: 3
81
+ Metrics/PerceivedComplexity:
82
+ Max: 1000
83
+
84
+ # Offense count: 27
85
+ # Cop supports --auto-correct.
86
+ Style/Alias:
87
+ Enabled: false
88
+
89
+ # Offense count: 1
90
+ # Cop supports --auto-correct.
91
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
92
+ Style/AlignParameters:
93
+ Enabled: false
94
+
95
+ # Offense count: 21
96
+ # Cop supports --auto-correct.
97
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
98
+ Style/AndOr:
99
+ Enabled: false
100
+
101
+ # Offense count: 18
102
+ # Cop supports --auto-correct.
103
+ Style/Blocks:
104
+ Enabled: false
105
+
106
+ # Offense count: 4
107
+ # Cop supports --auto-correct.
108
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
109
+ Style/BracesAroundHashParameters:
110
+ Enabled: false
111
+
112
+ # Offense count: 2
113
+ # Cop supports --auto-correct.
114
+ Style/ColonMethodCall:
115
+ Enabled: false
116
+
117
+ # Offense count: 2
118
+ # Cop supports --auto-correct.
119
+ Style/CommentIndentation:
120
+ Enabled: false
121
+
122
+ # Offense count: 18
123
+ Style/Documentation:
124
+ Enabled: false
125
+
126
+ # Offense count: 5
127
+ Style/DoubleNegation:
128
+ Enabled: false
129
+
130
+ # Offense count: 1
131
+ Style/EachWithObject:
132
+ Enabled: false
133
+
134
+ # Offense count: 1
135
+ # Cop supports --auto-correct.
136
+ Style/ElseAlignment:
137
+ Enabled: false
138
+
139
+ # Offense count: 1
140
+ # Cop supports --auto-correct.
141
+ Style/EmptyLiteral:
142
+ Enabled: false
143
+
144
+ # Offense count: 4
145
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
146
+ Style/FormatString:
147
+ Enabled: false
148
+
149
+ # Offense count: 2
150
+ # Configuration parameters: MaxLineLength.
151
+ Style/IfUnlessModifier:
152
+ Enabled: false
153
+
154
+ # Offense count: 6
155
+ # Cop supports --auto-correct.
156
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
157
+ Style/IndentHash:
158
+ Enabled: false
159
+
160
+ # Offense count: 2
161
+ # Cop supports --auto-correct.
162
+ # Configuration parameters: Width.
163
+ Style/IndentationWidth:
164
+ Enabled: false
165
+
166
+ # Offense count: 1
167
+ # Cop supports --auto-correct.
168
+ Style/InfiniteLoop:
169
+ Enabled: false
170
+
171
+ # Offense count: 5
172
+ Style/Lambda:
173
+ Enabled: false
174
+
175
+ # Offense count: 1
176
+ Style/ModuleFunction:
177
+ Enabled: false
178
+
179
+ # Offense count: 4
180
+ # Cop supports --auto-correct.
181
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
182
+ Style/MultilineOperationIndentation:
183
+ Enabled: false
184
+
185
+ # Offense count: 2
186
+ # Cop supports --auto-correct.
187
+ Style/NegatedIf:
188
+ Enabled: false
189
+
190
+ # Offense count: 1
191
+ # Cop supports --auto-correct.
192
+ Style/NumericLiterals:
193
+ MinDigits: 1000
194
+
195
+ # Offense count: 3
196
+ # Cop supports --auto-correct.
197
+ # Configuration parameters: PreferredDelimiters.
198
+ Style/PercentLiteralDelimiters:
199
+ Enabled: false
200
+
201
+ # Offense count: 2
202
+ # Cop supports --auto-correct.
203
+ # Configuration parameters: AllowMultipleReturnValues.
204
+ Style/RedundantReturn:
205
+ Enabled: false
206
+
207
+ # Offense count: 1
208
+ # Cop supports --auto-correct.
209
+ Style/RedundantSelf:
210
+ Enabled: false
211
+
212
+ # Offense count: 7
213
+ # Cop supports --auto-correct.
214
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
215
+ Style/SignalException:
216
+ Enabled: false
217
+
218
+ # Offense count: 1
219
+ # Cop supports --auto-correct.
220
+ Style/SpecialGlobalVars:
221
+ Enabled: false
222
+
223
+ # Offense count: 234
224
+ # Cop supports --auto-correct.
225
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
226
+ Style/StringLiterals:
227
+ Enabled: false
228
+
229
+ # Offense count: 1
230
+ # Cop supports --auto-correct.
231
+ # Configuration parameters: ExactNameMatch, AllowPredicates, AllowDSLWriters, Whitelist.
232
+ Style/TrivialAccessors:
233
+ Enabled: false
234
+
235
+ # Offense count: 1
236
+ # Cop supports --auto-correct.
237
+ # Configuration parameters: WordRegex.
238
+ Style/WordArray:
239
+ MinSize: 1000
@@ -0,0 +1,19 @@
1
+ rvm:
2
+ - 1.9.3
3
+ - 2.0.0
4
+ - 2.1.5
5
+ - 2.2.0
6
+ - rbx
7
+ - jruby
8
+
9
+ matrix:
10
+ allow_failures:
11
+ - rvm: rbx
12
+ - rvm: jruby
13
+
14
+ # http://blog.travis-ci.com/2014-12-17-faster-builds-with-container-based-infrastructure/
15
+ sudo: false
16
+
17
+ # script:
18
+ # - bundle exec rspec
19
+ # - bundle exec rubocop
@@ -1,27 +1,75 @@
1
- # Gmail gem changelog
1
+ # Gmail Gem Changelog
2
+
3
+ ## Unreleased
4
+
5
+ * Your change here
6
+
7
+
8
+ ## 0.5.0 - 2015-01-26
9
+
10
+ * Migrate primary repo to https://github.com/gmailgem/gmail with new project governance (@johnnyshields, @bootstraponline)
11
+ * Create logo for project (@johnnyshields)
12
+ * Implement IMAP recorder for specs and get all specs passing (@jcarbo)
13
+ * Add Rubocop to porject and fix offenses (@jcarbo)
14
+ * Fix: #connect method not invoking a block (@jcarbo)
15
+ * Support X-GM-RAW (raw Gmail search syntax) in filter query (@bootstraponline)
16
+ * Bugfix: Improperly processing labels containing parentheses (@ryanlchan #82)
17
+ * Add support for localizing labels (@ryanlchan #83)
18
+ * Support for XOAuth2 Client (@KieranP)
19
+ * Improve support for non-english labels and mailboxes (@KieranP)
20
+ * Fix IMAP library patch on Ruby 2 (@bootstraponline, @johnnyshields, @awakia)
21
+ * Ability to search emails by a UID filter (@KieranP)
22
+ * Add a way to disconnect the IMAP socket (@KieranP)
23
+ * Better support for timezones (@KieranP)
24
+ * Add `emails_in_batches` method (@KieranP)
25
+ * Gmail Message class: Include X-GM-THRID which is the thread id (@jcarbo)
26
+ * Gmail Message class: Include X-GM-MSGID which is a unique, non-changing email identifier (@KieranP)
27
+ * Gmail Message class: Fetch values in bulk and cache them (performance) (@KieranP)
28
+ * Gmail Message class: Pull FLAGS to make #read? and #starred? methods work (@KieranP)
29
+ * Gmail Message class: Don't mark an email as read when accessing the message (@KieranP)
30
+ * Gmail Message class: Reorganisation and cleanup of method definitions (@KieranP)
31
+ * Bugfix: Fix for XOAuth SMTP settings (@molsder #24)
32
+ * Implement Travis CI (@johnnyshields)
33
+ * Remove legacy dependency on MIME gem (@johnnyshields)
34
+ * Upgrade to RSpec 3.1 and remove Mocha dependency (@johnnyshields, @jcarbo #156)
35
+
36
+
37
+ ## 0.4.2
38
+
39
+ * Fix issue related to Mail gem version lock (@johnnyshields)
40
+
41
+
42
+ ## 0.4.1
43
+
44
+ * n/a
45
+
2
46
 
3
47
  ## 0.4.0
4
48
 
5
- * Added XOAUTH authentication method (Thanks Stefano Bernardi and Nicolas Fouché)
49
+ * Added XOAuth authentication method (Stefano Bernardi, Nicolas Fouché)
6
50
  * Separated clients
7
51
  * Fixed specs
8
52
 
53
+
9
54
  ## 0.3.4
10
55
 
11
- * Fixes in mailbox filters shortcuts (Thanks Benjamin Bock)
56
+ * Fixes in mailbox filters shortcuts (Benjamin Bock)
57
+
12
58
 
13
59
  ## 0.3.3
14
60
 
15
- * Added #expunge to Mailbox (Thanks Benjamin Bock)
16
- * Added more mailbox filters (Thanks Benjamin Bock)
61
+ * Added #expunge to Mailbox (Benjamin Bock)
62
+ * Added more mailbox filters (Benjamin Bock)
17
63
  * Added shortcuts for mailbox filters
18
64
  * Minor bugfixes
19
65
 
66
+
20
67
  ## 0.3.2
21
68
 
22
69
  * Added envelope fetching
23
70
  * Minor bugfixes
24
71
 
72
+
25
73
  ## 0.3.0
26
74
 
27
75
  * Refactoring
@@ -31,28 +79,34 @@
31
79
  * Code cleanup
32
80
  * RSpec for everything
33
81
 
34
- ## 0.1.1 / 2010-05-11
82
+
83
+ ## 0.1.1 - 2010-05-11
35
84
 
36
85
  * Added explicit tmail dependency in gemspec
37
86
  * Added better README tutorial content
38
87
 
39
- ## 0.0.9 / 2010-04-17
88
+
89
+ ## 0.0.9 - 2010-04-17
40
90
 
41
91
  * Fixed content-transfer-encoding when sending email
42
92
 
43
- ## 0.0.8 / 2009-12-23
93
+
94
+ ## 0.0.8 - 2009-12-23
44
95
 
45
96
  * Fixed attaching a file to an empty message
46
97
 
47
- ## 0.0.7 / 2009-12-23
98
+
99
+ ## 0.0.7 - 2009-12-23
48
100
 
49
101
  * Improved multipart message parsing reliability
50
102
 
51
- ## 0.0.6 / 2009-12-21
103
+
104
+ ## 0.0.6 - 2009-12-21
52
105
 
53
106
  * Fixed multipart parsing for when the boundary is marked in quotes.
54
107
 
55
- ## 0.0.5 / 2009-12-16
108
+
109
+ ## 0.0.5 - 2009-12-16
56
110
 
57
111
  * Fixed IMAP initializer to work with Ruby 1.9's net/imap
58
112
  * Better logout depending on the IMAP connection itself
@@ -60,23 +114,26 @@
60
114
  * Improved the MIME-parsing API slightly
61
115
  * Added some tests
62
116
 
63
- ## 0.0.4 / 2009-11-30
64
117
 
65
- * Added label creation (thanks to Justin Perkins / http://github.com/justinperkins)
118
+ ## 0.0.4 - 2009-11-30
119
+
120
+ * Added label creation (@justinperkins)
66
121
  * Made the gem login automatically when first needed
67
122
  * Added an optional block on the Gmail.new object that will login and logout for you
68
- * Added several search options (thanks to Mikkel Malmberg / http://github.com/mikker)
123
+ * Added several search options (@mikker)
124
+
69
125
 
70
- ## 0.0.3 / 2009-11-19
126
+ ## 0.0.3 - 2009-11-19
71
127
 
72
128
  * Fixed MIME::Message#content= for messages without an encoding
73
129
  * Added Gmail#new_message
74
130
 
75
- ## 0.0.2 / 2009-11-18
131
+
132
+ ## 0.0.2 - 2009-11-18
76
133
 
77
134
  * Made all of the examples in the README possible
78
135
 
79
- ## 0.0.1 / 2009-11-18
80
136
 
81
- * Birthday!
137
+ ## 0.0.1 - 2009-11-18
82
138
 
139
+ * Birthday!