mail_extract 0.1.3 → 0.1.4
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.
- data/README.md +37 -20
- data/lib/mail_extract.rb +14 -0
- data/lib/mail_extract/version.rb +1 -1
- data/spec/mail_extract_spec.rb +8 -0
- metadata +37 -44
data/README.md
CHANGED
@@ -12,31 +12,48 @@ It removes all quoted text and signatures leaving only original text.
|
|
12
12
|
|
13
13
|
### General usage
|
14
14
|
|
15
|
-
|
15
|
+
```ruby
|
16
|
+
require 'mail_extract'
|
16
17
|
|
17
|
-
|
18
|
+
body = MailExtract::Parser.new('MESSAGE').body
|
18
19
|
|
19
|
-
|
20
|
-
|
20
|
+
# or via shortcut
|
21
|
+
body = MailExtract.new('MESSAGE').body
|
22
|
+
|
23
|
+
# or via another shortcut
|
24
|
+
body = MailExtract.parse('MESSAGE')
|
25
|
+
```
|
21
26
|
|
22
27
|
### Using with Mail gem
|
23
28
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
29
|
+
```ruby
|
30
|
+
require 'mail'
|
31
|
+
require 'mail_extract'
|
32
|
+
|
33
|
+
mail = Mail.read_from_string(YOUR_MESSAGE_BODY)
|
34
|
+
|
35
|
+
# find only plain-text parts
|
36
|
+
if mail.multipart?
|
37
|
+
part = mail.parts.select { |p| p.content_type =~ /text\/plain/ }.first rescue nil
|
38
|
+
unless part.nil?
|
39
|
+
message = part.body.decoded
|
40
|
+
end
|
41
|
+
else
|
42
|
+
message = part.body.decoded
|
43
|
+
end
|
44
|
+
|
45
|
+
clean_message = MailExtract.new(message).body
|
46
|
+
```
|
47
|
+
|
48
|
+
### Configuration
|
49
|
+
|
50
|
+
If you need to grab only a head part of the message body you need to specify *:only_head* parameter:
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
MailExtract.new(message, :only_head => true)
|
54
|
+
```
|
55
|
+
|
56
|
+
This is extremely useful if you're parsing an email from mobile devices (iphone?) which do not follow the quote pattens.
|
40
57
|
|
41
58
|
## Known issues
|
42
59
|
|
data/lib/mail_extract.rb
CHANGED
@@ -5,10 +5,24 @@ module MailExtract
|
|
5
5
|
class << self
|
6
6
|
# Shortcut to MailExtract::Parser.new
|
7
7
|
#
|
8
|
+
# body - Email message contents
|
9
|
+
# options - Parser options
|
10
|
+
#
|
8
11
|
# @return [MailExtract::Parser]
|
9
12
|
#
|
10
13
|
def new(body, options={})
|
11
14
|
MailExtract::Parser.new(body, options)
|
12
15
|
end
|
16
|
+
|
17
|
+
# Parse the email message
|
18
|
+
#
|
19
|
+
# body - Email message contents
|
20
|
+
# options - Parser options
|
21
|
+
#
|
22
|
+
# @return [String]
|
23
|
+
#
|
24
|
+
def parse(body, options={})
|
25
|
+
MailExtract::Parser.new(body, options).body
|
26
|
+
end
|
13
27
|
end
|
14
28
|
end
|
data/lib/mail_extract/version.rb
CHANGED
@@ -0,0 +1,8 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'MailExtract' do
|
4
|
+
it 'parses an email via shortcuts' do
|
5
|
+
MailExtract.new(fixture('simple.txt')).body.should == result_fixture('simple.txt')
|
6
|
+
MailExtract.parse(fixture('simple.txt')).should == result_fixture('simple.txt')
|
7
|
+
end
|
8
|
+
end
|
metadata
CHANGED
@@ -1,49 +1,44 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: mail_extract
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.4
|
4
5
|
prerelease:
|
5
|
-
version: 0.1.3
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Dan Sosedoff
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-08-26 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
17
15
|
name: rake
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &2161093000 !ruby/object:Gem::Requirement
|
20
17
|
none: false
|
21
|
-
requirements:
|
22
|
-
- -
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version:
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
25
22
|
type: :development
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rspec
|
29
23
|
prerelease: false
|
30
|
-
|
24
|
+
version_requirements: *2161093000
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &2161092340 !ruby/object:Gem::Requirement
|
31
28
|
none: false
|
32
|
-
requirements:
|
29
|
+
requirements:
|
33
30
|
- - ~>
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version:
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.6'
|
36
33
|
type: :development
|
37
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2161092340
|
38
36
|
description: Email body parser that strips out all quotes and signatures.
|
39
37
|
email: dan.sosedoff@gmail.com
|
40
38
|
executables: []
|
41
|
-
|
42
39
|
extensions: []
|
43
|
-
|
44
40
|
extra_rdoc_files: []
|
45
|
-
|
46
|
-
files:
|
41
|
+
files:
|
47
42
|
- .gitignore
|
48
43
|
- .rspec
|
49
44
|
- .travis.yml
|
@@ -63,37 +58,34 @@ files:
|
|
63
58
|
- spec/fixtures/simple.txt
|
64
59
|
- spec/fixtures/simple_with_quotes.txt
|
65
60
|
- spec/line_spec.rb
|
61
|
+
- spec/mail_extract_spec.rb
|
66
62
|
- spec/parser_spec.rb
|
67
63
|
- spec/spec_helper.rb
|
68
|
-
has_rdoc: true
|
69
64
|
homepage: https://github.com/sosedoff/mail_extract
|
70
65
|
licenses: []
|
71
|
-
|
72
66
|
post_install_message:
|
73
67
|
rdoc_options: []
|
74
|
-
|
75
|
-
require_paths:
|
68
|
+
require_paths:
|
76
69
|
- lib
|
77
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
78
71
|
none: false
|
79
|
-
requirements:
|
80
|
-
- -
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version:
|
83
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
77
|
none: false
|
85
|
-
requirements:
|
86
|
-
- -
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version:
|
78
|
+
requirements:
|
79
|
+
- - ! '>='
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
89
82
|
requirements: []
|
90
|
-
|
91
83
|
rubyforge_project:
|
92
|
-
rubygems_version: 1.6
|
84
|
+
rubygems_version: 1.8.6
|
93
85
|
signing_key:
|
94
86
|
specification_version: 3
|
95
87
|
summary: Extracts email message body
|
96
|
-
test_files:
|
88
|
+
test_files:
|
97
89
|
- spec/fixtures/iphone.txt
|
98
90
|
- spec/fixtures/iphone_with_quotes.txt
|
99
91
|
- spec/fixtures/reply_with_quotes.txt
|
@@ -102,5 +94,6 @@ test_files:
|
|
102
94
|
- spec/fixtures/simple.txt
|
103
95
|
- spec/fixtures/simple_with_quotes.txt
|
104
96
|
- spec/line_spec.rb
|
97
|
+
- spec/mail_extract_spec.rb
|
105
98
|
- spec/parser_spec.rb
|
106
99
|
- spec/spec_helper.rb
|