gmail 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,691 @@
1
+ ---
2
+ LOGIN-9a890af1c86854f5170d99be6e10b8f1:
3
+ - - :return
4
+ - !ruby/struct:Net::IMAP::TaggedResponse
5
+ tag: RUBY0001
6
+ name: OK
7
+ data: !ruby/struct:Net::IMAP::ResponseText
8
+ code:
9
+ text: ki0zvkyi1yzgy7xu4f4dh46nqrcecm@gmail.com authenticated (Success)
10
+ raw_data: "RUBY0001 OK ki0zvkyi1yzgy7xu4f4dh46nqrcecm@gmail.com authenticated
11
+ (Success)\r\n"
12
+ - CAPABILITY: &1
13
+ - - IMAP4REV1
14
+ - UNSELECT
15
+ - IDLE
16
+ - NAMESPACE
17
+ - QUOTA
18
+ - ID
19
+ - XLIST
20
+ - CHILDREN
21
+ - X-GM-EXT-1
22
+ - UIDPLUS
23
+ - COMPRESS=DEFLATE
24
+ - ENABLE
25
+ - MOVE
26
+ - CONDSTORE
27
+ - ESEARCH
28
+ - UTF8=ACCEPT
29
+ LIST-b30698c3407aff5520448484b159fc07:
30
+ - - :return
31
+ - !ruby/struct:Net::IMAP::TaggedResponse
32
+ tag: RUBY0002
33
+ name: OK
34
+ data: !ruby/struct:Net::IMAP::ResponseText
35
+ code:
36
+ text: Success
37
+ raw_data: "RUBY0002 OK Success\r\n"
38
+ - CAPABILITY: *1
39
+ LIST:
40
+ - !ruby/struct:Net::IMAP::MailboxList
41
+ attr:
42
+ - :Hasnochildren
43
+ delim: "/"
44
+ name: Awesome
45
+ - !ruby/struct:Net::IMAP::MailboxList
46
+ attr:
47
+ - :Hasnochildren
48
+ delim: "/"
49
+ name: Great
50
+ - !ruby/struct:Net::IMAP::MailboxList
51
+ attr:
52
+ - :Hasnochildren
53
+ delim: "/"
54
+ name: INBOX
55
+ - !ruby/struct:Net::IMAP::MailboxList
56
+ attr:
57
+ - :Hasnochildren
58
+ delim: "/"
59
+ name: Ni&APE-os
60
+ - !ruby/struct:Net::IMAP::MailboxList
61
+ attr:
62
+ - :Noselect
63
+ - :Haschildren
64
+ delim: "/"
65
+ name: "[Gmail]"
66
+ - !ruby/struct:Net::IMAP::MailboxList
67
+ attr:
68
+ - :Hasnochildren
69
+ - :All
70
+ delim: "/"
71
+ name: "[Gmail]/All Mail"
72
+ - !ruby/struct:Net::IMAP::MailboxList
73
+ attr:
74
+ - :Hasnochildren
75
+ - :Drafts
76
+ delim: "/"
77
+ name: "[Gmail]/Drafts"
78
+ - !ruby/struct:Net::IMAP::MailboxList
79
+ attr:
80
+ - :Hasnochildren
81
+ - :Important
82
+ delim: "/"
83
+ name: "[Gmail]/Important"
84
+ - !ruby/struct:Net::IMAP::MailboxList
85
+ attr:
86
+ - :Sent
87
+ - :Hasnochildren
88
+ delim: "/"
89
+ name: "[Gmail]/Sent Mail"
90
+ - !ruby/struct:Net::IMAP::MailboxList
91
+ attr:
92
+ - :Hasnochildren
93
+ - :Junk
94
+ delim: "/"
95
+ name: "[Gmail]/Spam"
96
+ - !ruby/struct:Net::IMAP::MailboxList
97
+ attr:
98
+ - :Hasnochildren
99
+ - :Flagged
100
+ delim: "/"
101
+ name: "[Gmail]/Starred"
102
+ - !ruby/struct:Net::IMAP::MailboxList
103
+ attr:
104
+ - :Trash
105
+ - :Hasnochildren
106
+ delim: "/"
107
+ name: "[Gmail]/Trash"
108
+ - !ruby/struct:Net::IMAP::MailboxList
109
+ attr:
110
+ - :Hasnochildren
111
+ delim: "/"
112
+ name: one's and two's
113
+ - !ruby/struct:Net::IMAP::MailboxList
114
+ attr:
115
+ - :Hasnochildren
116
+ delim: "/"
117
+ name: some new label
118
+ - !ruby/struct:Net::IMAP::MailboxList
119
+ attr:
120
+ - :Hasnochildren
121
+ delim: "/"
122
+ name: some other label
123
+ SELECT-868fce8856c91e50bebd43b4dbd8e071:
124
+ - - :return
125
+ - !ruby/struct:Net::IMAP::TaggedResponse
126
+ tag: RUBY0003
127
+ name: OK
128
+ data: !ruby/struct:Net::IMAP::ResponseText
129
+ code: !ruby/struct:Net::IMAP::ResponseCode
130
+ name: READ-WRITE
131
+ data:
132
+ text: " [Gmail]/All Mail selected. (Success)"
133
+ raw_data: "RUBY0003 OK [READ-WRITE] [Gmail]/All Mail selected. (Success)\r\n"
134
+ - FLAGS: &6
135
+ - - :Answered
136
+ - :Flagged
137
+ - :Draft
138
+ - :Deleted
139
+ - :Seen
140
+ - "$Phishing"
141
+ - "$NotPhishing"
142
+ OK: &7
143
+ - !ruby/struct:Net::IMAP::ResponseText
144
+ code: !ruby/struct:Net::IMAP::ResponseCode
145
+ name: PERMANENTFLAGS
146
+ data: &2
147
+ - :Answered
148
+ - :Flagged
149
+ - :Draft
150
+ - :Deleted
151
+ - :Seen
152
+ - "$Phishing"
153
+ - "$NotPhishing"
154
+ - :*
155
+ text: " Flags permitted."
156
+ - !ruby/struct:Net::IMAP::ResponseText
157
+ code: !ruby/struct:Net::IMAP::ResponseCode
158
+ name: UIDVALIDITY
159
+ data: 11
160
+ text: " UIDs valid."
161
+ - !ruby/struct:Net::IMAP::ResponseText
162
+ code: !ruby/struct:Net::IMAP::ResponseCode
163
+ name: UIDNEXT
164
+ data: 190
165
+ text: " Predicted next UID."
166
+ - !ruby/struct:Net::IMAP::ResponseText
167
+ code: !ruby/struct:Net::IMAP::ResponseCode
168
+ name: HIGHESTMODSEQ
169
+ data: '14720'
170
+ text: ''
171
+ PERMANENTFLAGS: &8
172
+ - *2
173
+ UIDVALIDITY: &9
174
+ - 11
175
+ EXISTS: &10
176
+ - 181
177
+ RECENT: &11
178
+ - 0
179
+ UIDNEXT: &12
180
+ - 190
181
+ HIGHESTMODSEQ: &13
182
+ - '14720'
183
+ - - :return
184
+ - !ruby/struct:Net::IMAP::TaggedResponse
185
+ tag: RUBY0005
186
+ name: OK
187
+ data: !ruby/struct:Net::IMAP::ResponseText
188
+ code: !ruby/struct:Net::IMAP::ResponseCode
189
+ name: READ-WRITE
190
+ data:
191
+ text: " [Gmail]/All Mail selected. (Success)"
192
+ raw_data: "RUBY0005 OK [READ-WRITE] [Gmail]/All Mail selected. (Success)\r\n"
193
+ - FLAGS: &14
194
+ - - :Answered
195
+ - :Flagged
196
+ - :Draft
197
+ - :Deleted
198
+ - :Seen
199
+ - "$Phishing"
200
+ - "$NotPhishing"
201
+ OK: &15
202
+ - !ruby/struct:Net::IMAP::ResponseText
203
+ code: !ruby/struct:Net::IMAP::ResponseCode
204
+ name: PERMANENTFLAGS
205
+ data: &3
206
+ - :Answered
207
+ - :Flagged
208
+ - :Draft
209
+ - :Deleted
210
+ - :Seen
211
+ - "$Phishing"
212
+ - "$NotPhishing"
213
+ - :*
214
+ text: " Flags permitted."
215
+ - !ruby/struct:Net::IMAP::ResponseText
216
+ code: !ruby/struct:Net::IMAP::ResponseCode
217
+ name: UIDVALIDITY
218
+ data: 11
219
+ text: " UIDs valid."
220
+ - !ruby/struct:Net::IMAP::ResponseText
221
+ code: !ruby/struct:Net::IMAP::ResponseCode
222
+ name: UIDNEXT
223
+ data: 190
224
+ text: " Predicted next UID."
225
+ - !ruby/struct:Net::IMAP::ResponseText
226
+ code: !ruby/struct:Net::IMAP::ResponseCode
227
+ name: HIGHESTMODSEQ
228
+ data: '14720'
229
+ text: ''
230
+ PERMANENTFLAGS: &16
231
+ - *3
232
+ UIDVALIDITY: &17
233
+ - 11
234
+ EXISTS: &18
235
+ - 181
236
+ RECENT: &19
237
+ - 0
238
+ UIDNEXT: &20
239
+ - 190
240
+ HIGHESTMODSEQ: &21
241
+ - '14720'
242
+ - - :return
243
+ - !ruby/struct:Net::IMAP::TaggedResponse
244
+ tag: RUBY0007
245
+ name: OK
246
+ data: !ruby/struct:Net::IMAP::ResponseText
247
+ code: !ruby/struct:Net::IMAP::ResponseCode
248
+ name: READ-WRITE
249
+ data:
250
+ text: " [Gmail]/All Mail selected. (Success)"
251
+ raw_data: "RUBY0007 OK [READ-WRITE] [Gmail]/All Mail selected. (Success)\r\n"
252
+ - FLAGS: &22
253
+ - - :Answered
254
+ - :Flagged
255
+ - :Draft
256
+ - :Deleted
257
+ - :Seen
258
+ - "$Phishing"
259
+ - "$NotPhishing"
260
+ OK: &23
261
+ - !ruby/struct:Net::IMAP::ResponseText
262
+ code: !ruby/struct:Net::IMAP::ResponseCode
263
+ name: PERMANENTFLAGS
264
+ data: &4
265
+ - :Answered
266
+ - :Flagged
267
+ - :Draft
268
+ - :Deleted
269
+ - :Seen
270
+ - "$Phishing"
271
+ - "$NotPhishing"
272
+ - :*
273
+ text: " Flags permitted."
274
+ - !ruby/struct:Net::IMAP::ResponseText
275
+ code: !ruby/struct:Net::IMAP::ResponseCode
276
+ name: UIDVALIDITY
277
+ data: 11
278
+ text: " UIDs valid."
279
+ - !ruby/struct:Net::IMAP::ResponseText
280
+ code: !ruby/struct:Net::IMAP::ResponseCode
281
+ name: UIDNEXT
282
+ data: 190
283
+ text: " Predicted next UID."
284
+ - !ruby/struct:Net::IMAP::ResponseText
285
+ code: !ruby/struct:Net::IMAP::ResponseCode
286
+ name: HIGHESTMODSEQ
287
+ data: '14727'
288
+ text: ''
289
+ PERMANENTFLAGS: &24
290
+ - *4
291
+ UIDVALIDITY: &25
292
+ - 11
293
+ EXISTS: &26
294
+ - 181
295
+ RECENT: &27
296
+ - 0
297
+ UIDNEXT: &28
298
+ - 190
299
+ HIGHESTMODSEQ: &29
300
+ - '14727'
301
+ - - :return
302
+ - !ruby/struct:Net::IMAP::TaggedResponse
303
+ tag: RUBY0009
304
+ name: OK
305
+ data: !ruby/struct:Net::IMAP::ResponseText
306
+ code: !ruby/struct:Net::IMAP::ResponseCode
307
+ name: READ-WRITE
308
+ data:
309
+ text: " [Gmail]/All Mail selected. (Success)"
310
+ raw_data: "RUBY0009 OK [READ-WRITE] [Gmail]/All Mail selected. (Success)\r\n"
311
+ - FLAGS: &30
312
+ - - :Answered
313
+ - :Flagged
314
+ - :Draft
315
+ - :Deleted
316
+ - :Seen
317
+ - "$Phishing"
318
+ - "$NotPhishing"
319
+ OK: &31
320
+ - !ruby/struct:Net::IMAP::ResponseText
321
+ code: !ruby/struct:Net::IMAP::ResponseCode
322
+ name: PERMANENTFLAGS
323
+ data: &5
324
+ - :Answered
325
+ - :Flagged
326
+ - :Draft
327
+ - :Deleted
328
+ - :Seen
329
+ - "$Phishing"
330
+ - "$NotPhishing"
331
+ - :*
332
+ text: " Flags permitted."
333
+ - !ruby/struct:Net::IMAP::ResponseText
334
+ code: !ruby/struct:Net::IMAP::ResponseCode
335
+ name: UIDVALIDITY
336
+ data: 11
337
+ text: " UIDs valid."
338
+ - !ruby/struct:Net::IMAP::ResponseText
339
+ code: !ruby/struct:Net::IMAP::ResponseCode
340
+ name: UIDNEXT
341
+ data: 190
342
+ text: " Predicted next UID."
343
+ - !ruby/struct:Net::IMAP::ResponseText
344
+ code: !ruby/struct:Net::IMAP::ResponseCode
345
+ name: HIGHESTMODSEQ
346
+ data: '14727'
347
+ text: ''
348
+ PERMANENTFLAGS: &32
349
+ - *5
350
+ UIDVALIDITY: &33
351
+ - 11
352
+ EXISTS: &34
353
+ - 181
354
+ RECENT: &35
355
+ - 0
356
+ UIDNEXT: &36
357
+ - 190
358
+ HIGHESTMODSEQ: &37
359
+ - '14727'
360
+ UID SEARCH-0010f3078427015fc193bf14c1871582:
361
+ - - :return
362
+ - !ruby/struct:Net::IMAP::TaggedResponse
363
+ tag: RUBY0004
364
+ name: OK
365
+ data: !ruby/struct:Net::IMAP::ResponseText
366
+ code:
367
+ text: SEARCH completed (Success)
368
+ raw_data: "RUBY0004 OK SEARCH completed (Success)\r\n"
369
+ - FLAGS: *6
370
+ OK: *7
371
+ PERMANENTFLAGS: *8
372
+ UIDVALIDITY: *9
373
+ EXISTS: *10
374
+ RECENT: *11
375
+ UIDNEXT: *12
376
+ HIGHESTMODSEQ: *13
377
+ SEARCH:
378
+ - - 4
379
+ - 5
380
+ - 11
381
+ - 12
382
+ - 13
383
+ - 14
384
+ - 15
385
+ - 16
386
+ - 17
387
+ - 18
388
+ - 19
389
+ - 20
390
+ - 21
391
+ - 22
392
+ - 23
393
+ - 24
394
+ - 25
395
+ - 26
396
+ - 27
397
+ - 28
398
+ - 29
399
+ - 30
400
+ - 31
401
+ - 32
402
+ - 33
403
+ - 34
404
+ - 35
405
+ - 36
406
+ - 37
407
+ - 38
408
+ - 39
409
+ - 40
410
+ - 41
411
+ - 42
412
+ - 43
413
+ - 44
414
+ - 45
415
+ - 46
416
+ - 47
417
+ - 48
418
+ - 49
419
+ - 50
420
+ - 51
421
+ - 52
422
+ - 53
423
+ - 54
424
+ - 55
425
+ - 56
426
+ - 57
427
+ - 58
428
+ - 59
429
+ - 60
430
+ - 61
431
+ - 62
432
+ - 63
433
+ - 64
434
+ - 65
435
+ - 66
436
+ - 67
437
+ - 68
438
+ - 69
439
+ - 70
440
+ - 71
441
+ - 72
442
+ - 73
443
+ - 74
444
+ - 75
445
+ - 76
446
+ - 77
447
+ - 78
448
+ - 79
449
+ - 80
450
+ - 81
451
+ - 82
452
+ - 83
453
+ - 84
454
+ - 85
455
+ - 86
456
+ - 87
457
+ - 88
458
+ - 89
459
+ - 90
460
+ - 91
461
+ - 92
462
+ - 93
463
+ - 94
464
+ - 95
465
+ - 96
466
+ - 97
467
+ - 98
468
+ - 99
469
+ - 100
470
+ - 101
471
+ - 102
472
+ - 103
473
+ - 104
474
+ - 105
475
+ - 106
476
+ - 107
477
+ - 108
478
+ - 109
479
+ - 110
480
+ - 111
481
+ - 112
482
+ - 113
483
+ - 114
484
+ - 115
485
+ - 116
486
+ - 117
487
+ - 118
488
+ - 119
489
+ - 120
490
+ - 121
491
+ - 122
492
+ - 123
493
+ - 124
494
+ - 125
495
+ - 126
496
+ - 127
497
+ - 128
498
+ - 129
499
+ - 130
500
+ - 131
501
+ - 132
502
+ - 133
503
+ - 134
504
+ - 135
505
+ - 136
506
+ - 137
507
+ - 138
508
+ - 139
509
+ - 140
510
+ - 141
511
+ - 142
512
+ - 143
513
+ - 144
514
+ - 145
515
+ - 157
516
+ - 158
517
+ - 159
518
+ - 160
519
+ - 161
520
+ - 162
521
+ - 166
522
+ - 167
523
+ - 168
524
+ - 169
525
+ - 170
526
+ - 171
527
+ - 172
528
+ - 173
529
+ - 174
530
+ - 175
531
+ - 176
532
+ - 177
533
+ - 178
534
+ - 179
535
+ - 180
536
+ - 181
537
+ - 182
538
+ - 183
539
+ - 184
540
+ - 185
541
+ - 188
542
+ - 189
543
+ UID STORE-ac884ffbfb66da354d64b0f2d42a166f:
544
+ - - :return
545
+ - !ruby/struct:Net::IMAP::TaggedResponse
546
+ tag: RUBY0006
547
+ name: OK
548
+ data: !ruby/struct:Net::IMAP::ResponseText
549
+ code:
550
+ text: Success
551
+ raw_data: "RUBY0006 OK Success\r\n"
552
+ - FLAGS: *14
553
+ OK: *15
554
+ PERMANENTFLAGS: *16
555
+ UIDVALIDITY: *17
556
+ EXISTS: *18
557
+ RECENT: *19
558
+ UIDNEXT: *20
559
+ HIGHESTMODSEQ: *21
560
+ FETCH:
561
+ - !ruby/struct:Net::IMAP::FetchData
562
+ seqno: 181
563
+ attr:
564
+ X-GM-LABELS:
565
+ - "\\Important"
566
+ - "\\Inbox"
567
+ - "\\Sent"
568
+ - Awesome
569
+ - Great
570
+ UID: 189
571
+ UID STORE-c2d6f8de722e6c9f06f0a6a1a4163f69:
572
+ - - :return
573
+ - !ruby/struct:Net::IMAP::TaggedResponse
574
+ tag: RUBY0008
575
+ name: OK
576
+ data: !ruby/struct:Net::IMAP::ResponseText
577
+ code:
578
+ text: Success
579
+ raw_data: "RUBY0008 OK Success\r\n"
580
+ - FLAGS: *22
581
+ OK: *23
582
+ PERMANENTFLAGS: *24
583
+ UIDVALIDITY: *25
584
+ EXISTS: *26
585
+ RECENT: *27
586
+ UIDNEXT: *28
587
+ HIGHESTMODSEQ: *29
588
+ FETCH:
589
+ - !ruby/struct:Net::IMAP::FetchData
590
+ seqno: 181
591
+ attr:
592
+ X-GM-LABELS:
593
+ - "\\Important"
594
+ - "\\Inbox"
595
+ - "\\Sent"
596
+ - Awesome
597
+ - Great
598
+ UID: 189
599
+ UID FETCH-c91d19726aebc8362537324efef9b96b:
600
+ - - :return
601
+ - !ruby/struct:Net::IMAP::TaggedResponse
602
+ tag: RUBY0010
603
+ name: OK
604
+ data: !ruby/struct:Net::IMAP::ResponseText
605
+ code:
606
+ text: Success
607
+ raw_data: "RUBY0010 OK Success\r\n"
608
+ - FLAGS: *30
609
+ OK: *31
610
+ PERMANENTFLAGS: *32
611
+ UIDVALIDITY: *33
612
+ EXISTS: *34
613
+ RECENT: *35
614
+ UIDNEXT: *36
615
+ HIGHESTMODSEQ: *37
616
+ FETCH:
617
+ - !ruby/struct:Net::IMAP::FetchData
618
+ seqno: 181
619
+ attr:
620
+ X-GM-THRID: 1490771293684090059
621
+ X-GM-MSGID: 1490771293684090059
622
+ X-GM-LABELS:
623
+ - "\\Important"
624
+ - "\\Inbox"
625
+ - "\\Sent"
626
+ - Awesome
627
+ - Great
628
+ UID: 189
629
+ FLAGS: []
630
+ ENVELOPE: !ruby/struct:Net::IMAP::Envelope
631
+ date: Mon, 19 Jan 2015 18:31:32 -0500
632
+ subject: Hello world!
633
+ from:
634
+ - !ruby/struct:Net::IMAP::Address
635
+ name:
636
+ route:
637
+ mailbox: ki0zvkyi1yzgy7xu4f4dh46nqrcecm
638
+ host: gmail.com
639
+ sender:
640
+ - !ruby/struct:Net::IMAP::Address
641
+ name:
642
+ route:
643
+ mailbox: ki0zvkyi1yzgy7xu4f4dh46nqrcecm
644
+ host: gmail.com
645
+ reply_to:
646
+ - !ruby/struct:Net::IMAP::Address
647
+ name:
648
+ route:
649
+ mailbox: ki0zvkyi1yzgy7xu4f4dh46nqrcecm
650
+ host: gmail.com
651
+ to:
652
+ - !ruby/struct:Net::IMAP::Address
653
+ name:
654
+ route:
655
+ mailbox: ki0zvkyi1yzgy7xu4f4dh46nqrcecm
656
+ host: gmail.com
657
+ cc:
658
+ bcc:
659
+ in_reply_to:
660
+ message_id: "<54bd93d452c0f_74e73fc534c63bec5352@Jeffs-MBP.mail>"
661
+ BODY[]: "Return-Path: <ki0zvkyi1yzgy7xu4f4dh46nqrcecm@gmail.com>\r\nReceived:
662
+ from gmail.com (99-156-120-246.lightspeed.miamfl.sbcglobal.net. [99.156.120.246])\r\n
663
+ \ by mx.google.com with ESMTPSA id a15sm890292oic.18.2015.01.19.15.31.33\r\n
664
+ \ for <ki0zvkyi1yzgy7xu4f4dh46nqrcecm@gmail.com>\r\n (version=TLSv1.2
665
+ cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\r\n Mon, 19 Jan
666
+ 2015 15:31:34 -0800 (PST)\r\nDate: Mon, 19 Jan 2015 18:31:32 -0500\r\nFrom:
667
+ ki0zvkyi1yzgy7xu4f4dh46nqrcecm@gmail.com\r\nTo: ki0zvkyi1yzgy7xu4f4dh46nqrcecm@gmail.com\r\nMessage-ID:
668
+ <54bd93d452c0f_74e73fc534c63bec5352@Jeffs-MBP.mail>\r\nSubject: Hello world!\r\nMime-Version:
669
+ 1.0\r\nContent-Type: text/plain;\r\n charset=UTF-8\r\nContent-Transfer-Encoding:
670
+ 7bit\r\n\r\nYeah, hello there!\r\n"
671
+ LOGOUT-e76a09b7766d60a37ff9e1af527a143e:
672
+ - - :return
673
+ - !ruby/struct:Net::IMAP::TaggedResponse
674
+ tag: RUBY0011
675
+ name: OK
676
+ data: !ruby/struct:Net::IMAP::ResponseText
677
+ code:
678
+ text: 73 good day (Success)
679
+ raw_data: "RUBY0011 OK 73 good day (Success)\r\n"
680
+ - FLAGS: *30
681
+ OK: *31
682
+ PERMANENTFLAGS: *32
683
+ UIDVALIDITY: *33
684
+ EXISTS: *34
685
+ RECENT: *35
686
+ UIDNEXT: *36
687
+ HIGHESTMODSEQ: *37
688
+ BYE:
689
+ - !ruby/struct:Net::IMAP::ResponseText
690
+ code:
691
+ text: LOGOUT Requested