imap_processor 1.6 → 1.7
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.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/History.rdoc +14 -0
- data/README.rdoc +21 -0
- data/lib/imap_processor.rb +21 -14
- data/lib/imap_processor/archive.rb +3 -1
- metadata +31 -41
- metadata.gz.sig +0 -0
- data/.gemtest +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 632f5afa32e055708809e6817e2532f5a5f880b48d9bb808102e63e2bad6cff7
|
4
|
+
data.tar.gz: 145bf8485b69a4629b32b12748edc780899db542e6a180db88a61ee6fc93ba56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1c5b332b9d8e3dbb9f105d888cb796a1e901633f40147a241ed2ac0ec7f63664f8a9b78a0eed149d8653eace16de68190d2737462294192ecaaa0bf331d1746
|
7
|
+
data.tar.gz: 5561900484e14b7fe02508402af345a07a8999c56b2fdf05dd91989698b4b5a87bdd9f09acebf84232e7505b3a9ce8e57e8e9fc42041567555cf889592ec055c
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/History.rdoc
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
=== 1.7 / 2020-06-04
|
2
|
+
|
3
|
+
* 4 minor enhancements:
|
4
|
+
|
5
|
+
* Added #noop? to improve readability.
|
6
|
+
* Documented how to use this with gmail.
|
7
|
+
* Improved imap_archive output by distinguishing hosts.
|
8
|
+
* Improved show_messages output to be cleaner and have better info (from/to).
|
9
|
+
|
10
|
+
* 2 bug fixes:
|
11
|
+
|
12
|
+
* Fixed --noop by covering all imap calls that modify w/ checks.
|
13
|
+
* Fixed option processing with multiple accounts by dup'ing args to OptionParser.
|
14
|
+
|
1
15
|
=== 1.6 / 2014-10-17
|
2
16
|
|
3
17
|
* 1 minor enhancement:
|
data/README.rdoc
CHANGED
@@ -30,6 +30,27 @@ imap_mkdir :: Ensures that certain mailboxes exist.
|
|
30
30
|
|
31
31
|
Run any command with --help for details.
|
32
32
|
|
33
|
+
== Google Mail:
|
34
|
+
|
35
|
+
This is kinda painful. You need to have Two Factor Authentication
|
36
|
+
enabled with google, then you need to create an app specific password
|
37
|
+
as described here: https://support.google.com/accounts/answer/185833
|
38
|
+
|
39
|
+
Then, your config needs to be set up like this:
|
40
|
+
|
41
|
+
- :Host: imap.googlemail.com
|
42
|
+
:SSL: true
|
43
|
+
:Auth: PLAIN
|
44
|
+
:Username: your.address@gmail.com
|
45
|
+
:Password: app-specific-password
|
46
|
+
|
47
|
+
Specifically, you need to set auth to PLAIN, and your password needs
|
48
|
+
to your app specific password. Run with --debug to help figure
|
49
|
+
problems out.
|
50
|
+
|
51
|
+
Google is threatening to turn this off at some point and require
|
52
|
+
oauth... at which point... I have no idea. I give up I guess.
|
53
|
+
|
33
54
|
== REQUIREMENTS:
|
34
55
|
|
35
56
|
* IMAP server
|
data/lib/imap_processor.rb
CHANGED
@@ -26,7 +26,7 @@ class IMAPProcessor
|
|
26
26
|
##
|
27
27
|
# The version of IMAPProcessor you are using
|
28
28
|
|
29
|
-
VERSION = "1.
|
29
|
+
VERSION = "1.7"
|
30
30
|
|
31
31
|
##
|
32
32
|
# Base IMAPProcessor error class
|
@@ -137,8 +137,7 @@ class IMAPProcessor
|
|
137
137
|
exit 1
|
138
138
|
end
|
139
139
|
|
140
|
-
defaults = YAML.load_file(opts_file)
|
141
|
-
defaults = [defaults] unless Array === defaults
|
140
|
+
defaults = Array(YAML.load_file(opts_file))
|
142
141
|
end
|
143
142
|
|
144
143
|
defaults.map { |default|
|
@@ -285,7 +284,7 @@ Example ~/.#{@@opts_file_name}:
|
|
285
284
|
|
286
285
|
end # OptionParser.new do
|
287
286
|
|
288
|
-
op.parse! args
|
287
|
+
op.parse! args.dup
|
289
288
|
|
290
289
|
options[:Port] ||= options[:SSL] ? 993 : 143
|
291
290
|
|
@@ -425,7 +424,7 @@ Example ~/.#{@@opts_file_name}:
|
|
425
424
|
list = imap.list '', name
|
426
425
|
return if list
|
427
426
|
log "CREATE #{name}"
|
428
|
-
imap.create name
|
427
|
+
imap.create name unless noop?
|
429
428
|
end
|
430
429
|
|
431
430
|
##
|
@@ -433,10 +432,10 @@ Example ~/.#{@@opts_file_name}:
|
|
433
432
|
|
434
433
|
def delete_messages uids, expunge = true
|
435
434
|
log "DELETING [...#{uids.size} uids]"
|
436
|
-
imap.store uids, '+FLAGS.SILENT', [:Deleted]
|
435
|
+
imap.store uids, '+FLAGS.SILENT', [:Deleted] unless noop?
|
437
436
|
if expunge then
|
438
437
|
log "EXPUNGE"
|
439
|
-
imap.expunge
|
438
|
+
imap.expunge unless noop?
|
440
439
|
end
|
441
440
|
end
|
442
441
|
|
@@ -554,12 +553,12 @@ Example ~/.#{@@opts_file_name}:
|
|
554
553
|
log "COPY [...#{uids.size} uids]"
|
555
554
|
|
556
555
|
begin
|
557
|
-
imap.copy uids, destination
|
556
|
+
imap.copy uids, destination unless noop?
|
558
557
|
rescue Net::IMAP::NoResponseError
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
558
|
+
unless noop? then
|
559
|
+
create_mailbox destination
|
560
|
+
imap.copy uids, destination
|
561
|
+
end
|
563
562
|
end
|
564
563
|
|
565
564
|
delete_messages uids, expunge
|
@@ -571,12 +570,14 @@ Example ~/.#{@@opts_file_name}:
|
|
571
570
|
def show_messages(uids)
|
572
571
|
return if uids.nil? or (Array === uids and uids.empty?)
|
573
572
|
|
574
|
-
fetch_data = 'BODY.PEEK[HEADER.FIELDS (DATE SUBJECT
|
573
|
+
fetch_data = 'BODY.PEEK[HEADER.FIELDS (DATE FROM TO SUBJECT)]'
|
575
574
|
messages = imap.fetch uids, fetch_data
|
576
575
|
fetch_data.sub! '.PEEK', '' # stripped by server
|
577
576
|
|
577
|
+
messages ||= []
|
578
|
+
|
578
579
|
messages.each do |res|
|
579
|
-
puts res.attr[fetch_data].delete("\r")
|
580
|
+
puts res.attr[fetch_data].delete("\r").gsub(/^/, " ")
|
580
581
|
end
|
581
582
|
end
|
582
583
|
|
@@ -587,4 +588,10 @@ Example ~/.#{@@opts_file_name}:
|
|
587
588
|
@verbose
|
588
589
|
end
|
589
590
|
|
591
|
+
##
|
592
|
+
# Did the user set --noop?
|
593
|
+
|
594
|
+
def noop?
|
595
|
+
options[:Noop]
|
596
|
+
end
|
590
597
|
end
|
@@ -43,6 +43,8 @@ imap_archive archives old mail on IMAP server by moving it to dated mailboxen.
|
|
43
43
|
def initialize(options)
|
44
44
|
super
|
45
45
|
|
46
|
+
puts "Archiving #{options[:Host]}"
|
47
|
+
|
46
48
|
@list = options[:List]
|
47
49
|
@move = options[:Move]
|
48
50
|
@sep = options[:Sep] || '.'
|
@@ -99,7 +101,7 @@ imap_archive archives old mail on IMAP server by moving it to dated mailboxen.
|
|
99
101
|
end
|
100
102
|
|
101
103
|
log "EXPUNGE"
|
102
|
-
imap.expunge
|
104
|
+
imap.expunge unless noop?
|
103
105
|
end
|
104
106
|
end
|
105
107
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imap_processor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.7'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
@@ -11,9 +11,9 @@ bindir: bin
|
|
11
11
|
cert_chain:
|
12
12
|
- |
|
13
13
|
-----BEGIN CERTIFICATE-----
|
14
|
-
|
14
|
+
MIIDPjCCAiagAwIBAgIBBDANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
|
15
15
|
ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
|
16
|
-
|
16
|
+
GRYDY29tMB4XDTE5MTIxMzAwMDIwNFoXDTIwMTIxMjAwMDIwNFowRTETMBEGA1UE
|
17
17
|
AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
|
18
18
|
JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
|
19
19
|
b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
|
@@ -22,58 +22,50 @@ cert_chain:
|
|
22
22
|
GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
|
23
23
|
qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
|
24
24
|
gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
|
25
|
-
HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
25
|
+
HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBCwUAA4IB
|
26
|
+
AQCkkcHqAa6IKLYGl93rn78J3L+LnqyxaA059n4IGMHWN5bv9KBQnIjOrpLadtYZ
|
27
|
+
vhWkunWDKdfVapBEq5+T4HzqnsEXC3aCv6JEKJY6Zw7iSzl0M8hozuzRr+w46wvT
|
28
|
+
fV2yTN6QTVxqbMsJJyjosks4ZdQYov2zdvQpt1HsLi+Qmckmg8SPZsd+T8uiiBCf
|
29
|
+
b+1ORSM5eEfBQenPXy83LZcoQz8i6zVB4aAfTGGdhxjoMGUEmSZ6xpkOzmnGa9QK
|
30
|
+
m5x9IDiApM+vCELNwDXXGNFEnQBBK+wAe4Pek8o1V1TTOxL1kGPewVOitX1p3xoN
|
31
|
+
h7iEjga8iM1LbZUfiISZ+WrB
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date:
|
33
|
+
date: 2020-06-04 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: minitest
|
37
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - ~>
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '5.4'
|
42
|
-
type: :development
|
43
|
-
prerelease: false
|
44
|
-
version_requirements: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - ~>
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '5.4'
|
49
35
|
- !ruby/object:Gem::Dependency
|
50
36
|
name: rdoc
|
51
37
|
requirement: !ruby/object:Gem::Requirement
|
52
38
|
requirements:
|
53
|
-
- -
|
39
|
+
- - ">="
|
54
40
|
- !ruby/object:Gem::Version
|
55
41
|
version: '4.0'
|
42
|
+
- - "<"
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '7'
|
56
45
|
type: :development
|
57
46
|
prerelease: false
|
58
47
|
version_requirements: !ruby/object:Gem::Requirement
|
59
48
|
requirements:
|
60
|
-
- -
|
49
|
+
- - ">="
|
61
50
|
- !ruby/object:Gem::Version
|
62
51
|
version: '4.0'
|
52
|
+
- - "<"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '7'
|
63
55
|
- !ruby/object:Gem::Dependency
|
64
56
|
name: hoe
|
65
57
|
requirement: !ruby/object:Gem::Requirement
|
66
58
|
requirements:
|
67
|
-
- - ~>
|
59
|
+
- - "~>"
|
68
60
|
- !ruby/object:Gem::Version
|
69
|
-
version: '3.
|
61
|
+
version: '3.22'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
65
|
requirements:
|
74
|
-
- - ~>
|
66
|
+
- - "~>"
|
75
67
|
- !ruby/object:Gem::Version
|
76
|
-
version: '3.
|
68
|
+
version: '3.22'
|
77
69
|
description: |-
|
78
70
|
IMAPProcessor is a client for processing messages on an IMAP server. It
|
79
71
|
provides some basic mechanisms for connecting to an IMAP server, determining
|
@@ -106,8 +98,7 @@ extra_rdoc_files:
|
|
106
98
|
- Manifest.txt
|
107
99
|
- README.rdoc
|
108
100
|
files:
|
109
|
-
- .autotest
|
110
|
-
- .gemtest
|
101
|
+
- ".autotest"
|
111
102
|
- History.rdoc
|
112
103
|
- Manifest.txt
|
113
104
|
- README.rdoc
|
@@ -135,28 +126,27 @@ files:
|
|
135
126
|
homepage: https://github.com/seattlerb/imap_processor
|
136
127
|
licenses:
|
137
128
|
- MIT
|
138
|
-
metadata:
|
129
|
+
metadata:
|
130
|
+
homepage_uri: https://github.com/seattlerb/imap_processor
|
139
131
|
post_install_message:
|
140
132
|
rdoc_options:
|
141
|
-
- --main
|
133
|
+
- "--main"
|
142
134
|
- README.rdoc
|
143
135
|
require_paths:
|
144
136
|
- lib
|
145
137
|
required_ruby_version: !ruby/object:Gem::Requirement
|
146
138
|
requirements:
|
147
|
-
- -
|
139
|
+
- - ">="
|
148
140
|
- !ruby/object:Gem::Version
|
149
141
|
version: '0'
|
150
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
143
|
requirements:
|
152
|
-
- -
|
144
|
+
- - ">="
|
153
145
|
- !ruby/object:Gem::Version
|
154
146
|
version: '0'
|
155
147
|
requirements: []
|
156
|
-
|
157
|
-
rubygems_version: 2.4.1
|
148
|
+
rubygems_version: 3.0.3
|
158
149
|
signing_key:
|
159
150
|
specification_version: 4
|
160
151
|
summary: IMAPProcessor is a client for processing messages on an IMAP server
|
161
|
-
test_files:
|
162
|
-
- test/test_imap_processor.rb
|
152
|
+
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|
data/.gemtest
DELETED
File without changes
|