eml2html 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 88a345ca10d46808f2c617c63478fee61db47bb006a13cfe3f19e67cf3417161
4
- data.tar.gz: d0433e3934602332c321d6d30a4b325e68c66594b793fb8112ce85212bdb3a38
3
+ metadata.gz: 8deb00380665f3d8c46300ec62bc2492404aedf97b3e6dfd7c8ab4bc0b4be168
4
+ data.tar.gz: cfa02ddcc50fe9a6d9013dad45f0109737138c54805a123c805da5bc655236c0
5
5
  SHA512:
6
- metadata.gz: 14aa1f3fb30cf23f05a0a38dd28f9c1d169cbc8818360fda9797c6338661d58a18abcc75cde5ff49202f4ee36157625a318a55b849f8c5051bf95da984c390ff
7
- data.tar.gz: e0f8c46c26cd16607f5033944dc9d4a823d420211ee5a757609412f754ece05f5ad70931d02d9e40c95e1e7dc33bffdea168241c7dc4f534a1522ad0972a82c1
6
+ metadata.gz: e5707c58bb4fc1703b5336a35d609fa13f2c710e571dc9a344bd4e88584c876d825c9cb2b22f390947ec1e3ec0cf11889f7d6f9212ce6847b9e4b30139f7fa27
7
+ data.tar.gz: be97c59aa162bda1134867a2d4a03619ac7287188b89ada54247c57863b3ebc0e2087d6f02b6d1a6a6d675b8b97ae2e8f13ad31613a2ee0005a422ba0f1904e8
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.4
4
+ - 2.5
5
+ - 2.6
6
+ script: rspec
@@ -2,7 +2,14 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
- ## [0.0.0] - 2019-09-05
5
+ ## [0.0.5] - 2019-09-09
6
+
7
+ ### Fixed
8
+
9
+ - `NoMethodError (undefined method 'includes' for Array)` (#3)
10
+ - Email part filename may also be located in `Content-Disposition` header (#3)
11
+
12
+ ## [0.0.4] - 2019-09-05
6
13
 
7
14
  ### Added
8
15
 
@@ -62,7 +62,7 @@ module Eml2Html
62
62
  rtn_attachments = @attachments
63
63
  else
64
64
  @attachments.each do |a|
65
- unless @cids_in_body.includes(a.cid)
65
+ unless @cids_in_body.include?(a.cid)
66
66
  rtn_attachments.push(a)
67
67
  end
68
68
  end
@@ -103,16 +103,17 @@ module Eml2Html
103
103
  @attachments = @message.parts.flat_map do |part|
104
104
  if part.multipart?
105
105
  part.parts.map do |part|
106
- name = part['Content-Type'].filename
106
+ name = part['Content-Type'].filename || part['Content-Disposition']&.filename
107
107
  next unless name
108
108
  Attachment.new(part.cid, name, part.body.to_s)
109
109
  end
110
110
  else
111
- name = part['Content-Type'].filename
111
+ name = part['Content-Type'].filename || part['Content-Disposition']&.filename
112
112
  next unless name
113
113
  Attachment.new(part.cid, name, part.body.to_s)
114
114
  end
115
115
  end.compact
116
+ html_body #populate the @cids_in_body array
116
117
  end
117
118
 
118
119
  def replace_images_src(html)
@@ -1,3 +1,3 @@
1
1
  module Eml2Html
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -0,0 +1,136 @@
1
+ Received: from BY5PR12MB3748.namprd12.prod.outlook.com
2
+ Received: from BY5PR12MB3906.namprd12.prod.outlook.com (10.255.137.154) by
3
+ Received: from BY5PR12MB3906.namprd12.prod.outlook.com
4
+ Authentication-Results: example.com; dkim=none (message not signed)
5
+ Content-Transfer-Encoding: binary
6
+ From: "Person, bob" <person@example.com>
7
+ To: "Inquiries" <Inquiries@example.com>
8
+ Subject: FW: Communication Email
9
+ Thread-Topic: Communication Email
10
+ Thread-Index: AQHVXbPliIbE/GguY02AgunwjIShoqcQuF/ggAAFxdCAAVJoQA==
11
+ Date: Thu, 29 Aug 2019 12:33:54 +0000
12
+ Message-ID: <BY5PR12MB3906E1A8DE8DD910A75116B1C5A20@BY5PR12MB3906.namprd12.prod.outlook.com>
13
+ References: <BWZBZTTBZ$UYZATTYYVWYAV@mail-out.via.act-on.net>
14
+ In-Reply-To: <BN8PR12MB3044B7C87C86BE7617C36D96AFA30@BN8PR12MB3044.namprd12.prod.outlook.com>
15
+ Accept-Language: en-US
16
+ Content-Language: en-US
17
+ X-MS-Has-Attach: yes
18
+ X-MS-Exchange-Organization-SCL: -1
19
+ X-MS-TNEF-Correlator: <BY5PR12MB3906E1A8DE8DD910A75116B1C5A20@BY5PR12MB3906.namprd12.prod.outlook.com>
20
+ msip_labels: MSIP_Label_807724ff-9999-494f-b257-05dacc46ac87_Enabled=True;
21
+ x-dg-ref: PG1ldGE+PGF0IG5tPSJib2R5Lmh0bWwiIHA9ImM6XHVzZXJzXGVnbG9zdGVyXGFwcGRhdGFccm9hbWluZ1wwOWQ4NDliNi0zMmQzLTRhNDAtODVlZS02Yjg0YmEyOWUzNWJcbXNnc1xtc2ctM2UyYjcwMjktY2E1OS0xMWU5LWE5OWMtNGMzNDg4NjI3ZGQ4XGFtZS10ZXN0XDNlMmI3MDJiLWNhNTktMTFlOS1hOTljLTRjMzQ4ODYyN2RkOGJvZHkuaHRtbCIgc3o9IjExNDkxNSIgdD0iMTMyMTE1NTU2MjY2MDIyNjg1IiBoPSJPK2FVdEdmMHdwc25BaHkyc3FNQXpaYnhIekE9IiBpZD0iIiBibD0iMCIgYm89IjEiLz48L21ldGE+
22
+ x-dg-rorf: MIME-Version: 1.0
23
+ X-MS-Exchange-Organization-MessageDirectionality: Originating
24
+ X-MS-Exchange-Organization-AuthSource: BY5PR12MB3906.namprd12.prod.outlook.com
25
+ X-MS-Exchange-Organization-AuthAs: Internal
26
+ X-MS-Exchange-Organization-AuthMechanism: 04
27
+ X-Originating-IP: [12.165.188.170]
28
+ X-MS-Exchange-Organization-Network-Message-Id: 677ee198-3d14-4733-32cb-08d72c7d27eb
29
+ X-MS-PublicTrafficType: Email
30
+ Return-Path: person@example.com
31
+ X-MS-Exchange-Organization-ExpirationStartTime: 29 Aug 2019 12:33:55.0017
32
+ X-MS-Exchange-Organization-ExpirationStartTimeReason: OriginalSubmit
33
+ X-MS-Exchange-Organization-ExpirationInterval: 1:00:00:00.0000000
34
+ X-MS-Exchange-Organization-ExpirationIntervalReason: OriginalSubmit
35
+ X-MS-Office365-Filtering-Correlation-Id: 677ee198-3d14-4733-32cb-08d72c7d27eb
36
+ X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(2017052603328)(49563074)(7193020);SRVR:BY5PR12MB3748;
37
+ X-MS-TrafficTypeDiagnostic: BY5PR12MB3748:
38
+ X-MS-Exchange-PUrlCount: 28
39
+ X-MS-Exchange-AtpMessageProperties: SA
40
+ X-MS-Oob-TLC-OOBClassifiers: OLM:8882;
41
+ X-Forefront-Antispam-Report: SFV:SKI;SFS:;DIR:INB;SFP:;SCL:-1;SRVR:BY5PR12MB3748;H:BY5PR12MB3906.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;
42
+ X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Aug 2019 12:33:54.6815
43
+ X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
44
+ X-MS-Exchange-CrossTenant-Id: e58c8e81-abd8-48a8-929d-eb67611b83bd
45
+ X-MS-Exchange-CrossTenant-Network-Message-Id: 677ee198-3d14-4733-32cb-08d72c7d27eb
46
+ X-MS-Exchange-CrossTenant-MailboxType: HOSTED
47
+ X-MS-Exchange-CrossTenant-UserPrincipalName: SguAapAOGHTt59uwiUjwC2FRdzoIGYiV9hEU48YnXB/0e0dlwoiaAd2ZkOvinCVT4C8eyXvxjAnjtwDVSYsAEbhTJVgghwBElAToCF6CFbs=
48
+ X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB3748
49
+ X-MS-Exchange-Transport-EndToEndLatency: 00:00:01.7950727
50
+ X-MS-Exchange-Processed-By-BccFoldering: 15.20.2220.007
51
+ X-Microsoft-Antispam-Mailbox-Delivery: ucf:0;jmr:0;ex:0;auth:0;dest:I;ENG:(750127)(520011016)(706158)(944506383)(944626516);
52
+ X-Microsoft-Antispam-Message-Info: dMafteyPCFwdgcVA6/2kIoWOdGA0GWlE0XpkctcPBrQp70CrfXhiDPbOQdooy40qrKB6yZ6ID1K5D6LuSrBfZwGhsq2fdI5oTITT6uddR6Mjndi7P/ZfOwaXZKn4Bfdrt4SRkTRS47bLGjd+owyRM3ITXcI9yQTeO8C6lg/Sk+hewUHDiqmmViuExxqeCkS3uSyxX7ICk/kS6i6dwPlJ+x6MphB+uoGULuNJiHNBjtauqZwbqDO8G7d45AdF8Ifb5mSx1RELsUjS7FNghtvMnavZ3P9HklgLBioE2tnOkRQjc9Nz+C2KVBr8yWWmGrIXBWqAzGhBHJvXNnEcRdAXTEzo9gSOnamyaq5LvDXyhX5pVzSmlXVErKnYtVLP4fcGyhqQqIYDUCrXfHfd/HNdcgAm/ibT+nf7GHiGADBHD8AbZZLygjwy9RsJp7ubZfCW
53
+ Priority: 0
54
+ Content-Type: multipart/related; boundary="----_=_NextPart_001_18226df8.5d67c655"
55
+
56
+ This is a multi-part message in MIME format.
57
+
58
+ ------_=_NextPart_001_18226df8.5d67c655
59
+ Content-Type: multipart/alternative; boundary="----_=_NextPart_002_3f882116d9e0.5d67c655"
60
+
61
+
62
+ ------_=_NextPart_002_3f882116d9e0.5d67c655
63
+ Content-Type: text/plain
64
+
65
+
66
+
67
+ From: Communication <communications@example.com <mailto:communications@example.com> >
68
+ Sent: Wednesday, August 28, 2019 11:19 AM
69
+ To: Person, Bill <Bill@example.com <mailto:Bill@example.com> >
70
+ Subject: Communication Email
71
+
72
+
73
+
74
+
75
+ Twitter!
76
+
77
+
78
+
79
+
80
+ ------_=_NextPart_002_3f882116d9e0.5d67c655
81
+ Content-Type: text/html
82
+
83
+ <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta name=Generator content="Microsoft Word 15 (filtered medium)"></head><body bgcolor=white lang=EN-US link=blue vlink=purple><p>Twitter!</p><img border=0 width=32 height=32 style='width:.3333in;height:.3333in' id="Picture_x0020_8" src="cid:image009.png@01D55D9B.4CED6CC0" alt=Twitter></body></html>
84
+
85
+ ------_=_NextPart_002_3f882116d9e0.5d67c655--
86
+
87
+
88
+
89
+ ------_=_NextPart_001_18226df8.5d67c655
90
+ Content-Type: image/png
91
+ Content-Disposition: attachment; filename="image009.png"
92
+ Content-Transfer-Encoding: base64
93
+ Content-ID: image009.png@01D55D9B.4CED6CC0
94
+
95
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0
96
+ d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9i
97
+ ZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2Vo
98
+ aUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6
99
+ bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5
100
+ LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpS
101
+ REYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk
102
+ Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIg
103
+ eG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8i
104
+ IHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5
105
+ cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5j
106
+ b20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRp
107
+ ZDpjMTZjZDE4ZC1kYWQzLTQxNDQtYjI3YS00ODA0ZjM4YWFmYWYiIHhtcE1N
108
+ OkRvY3VtZW50SUQ9InhtcC5kaWQ6MUJGQjVFNDFDOUNCMTFFNDhFMEI5NTNE
109
+ Qzk3MDhBNDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUJGQjVFNDBD
110
+ OUNCMTFFNDhFMEI5NTNEQzk3MDhBNDAiIHhtcDpDcmVhdG9yVG9vbD0iQWRv
111
+ YmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVy
112
+ aXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphYTkwYTFjZi05
113
+ YWM1LTQ2MWMtYTA0YS0xMTdlZjY5MzZmOGYiIHN0UmVmOmRvY3VtZW50SUQ9
114
+ InhtcC5kaWQ6YzE2Y2QxOGQtZGFkMy00MTQ0LWIyN2EtNDgwNGYzOGFhZmFm
115
+ Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRh
116
+ PiA8P3hwYWNrZXQgZW5kPSJyIj8+Z//T6gAAAsRJREFUeNq8V01oE1EQnjy2
117
+ 1jYGkdofS21IMQeh1UvroT2kWBGkECEURPBSCMRrbvXQgwjirb2KQi8FEcVD
118
+ oPQgqRVsKXQPIhWFSGIRUiMVG0MsphKcWWbjmu7PS5PsB98h2dn55s17O2/G
119
+ 0/osA5IIIseQw8hBZADZzc9ySHK0hVSRa8iUjFNFwmYcGUGGkX4Lm35miH9v
120
+ IxPIF8hVO+cemwwMIKPIaWQPHA1fkQvIx8h0LRmYQMaRk1AfKPA7yAvIOWSy
121
+ 2kCYvESpftAAcSMm2WfYKQBa+SwftEZjmH1PWAUwwGlvhrgxiDhrHQog2uC0
122
+ 221HtDqAcT7tbmGaNSsBROr41I76dUT0AIJmp/O/EnhMgNPzxMhp2Az1wMpo
123
+ F8TOtGn/z/R77V4jzaDC5dVvZxk/54M+bwuEN3dNxZNXeqGr/V9JGe1th/sH
124
+ ZXj0/geEfAq8Lvwxc0uaY0L21F/1n9BWV50NCs4obsT1gM9KvPJVCL5YbPGz
125
+ VK6sbONaHyxePAVTHa2OQZ9/mXUyGVT4VrPFcm4fLmV/aQF4WwRMBU9qXLR5
126
+ J71XkklsQBiuVEvcOOvVxGtB4aAsY9YtZKyefilCUc5hBR/3fkvZCW4mbEEH
127
+ KfYmB+u4DTKgYOc+FWRMc4I7GUd04OmX3YblzwVIlaQylhHcRjni4c4+zL/9
128
+ 7rgVmXwJ7n7Iy+7UluAeTgozmNbIStYyCBK/vfFNdvUEVeEGctuqGlLhoWJD
129
+ GOlsg6HO46ae6HzE1N1axElzTXD3mrCyIod0oPRiZFw9rfh5Kg+3Xu3A5fWa
130
+ Vg6smdKbUroan7h4I1KzepM6Zr0OrHL36hYW9HbdWIiodV5yQXyJtQ61ZGlu
131
+ ndUmiquskbbqiqlvv9ekIFT2nXQaTOh0Fhs0mBjTbjqYWE1GSS7R75o9mnkk
132
+ pmOZ4dSsyNQ9nLoynv8VYADvOdpO4SLVRAAAAABJRU5ErkJggg==
133
+
134
+
135
+
136
+ ------_=_NextPart_001_18226df8.5d67c655--
@@ -10,6 +10,7 @@ RSpec.describe Eml2Html::Converter do
10
10
  end
11
11
 
12
12
  let(:subject) { Eml2Html::Converter.new fixture_path('test.eml') }
13
+ let(:other_subject) { Eml2Html::Converter.new fixture_path('other_format.eml') }
13
14
 
14
15
  context "save_txt" do
15
16
  it "creates file" do
@@ -32,4 +33,29 @@ RSpec.describe Eml2Html::Converter do
32
33
  expect(File).to exist('test.zip')
33
34
  end
34
35
  end
36
+
37
+ context "other_eml_file" do
38
+ it "doesn't crash" do
39
+ body = other_subject.html_body
40
+ expect(body).to_not be(nil)
41
+ end
42
+
43
+ it "loads gets attachment independently" do
44
+ a = other_subject.attachment('image009.png')
45
+ expect(a).to_not be(nil)
46
+ expect(a.length).to be > 0
47
+ end
48
+
49
+ context "attachments" do
50
+ it "loads_an_array_of_other_attachments" do
51
+ attachments = other_subject.attachments(true)
52
+ expect(attachments.length).to be(1)
53
+ end
54
+
55
+ it "doesn't load attachments that are pics in the body" do
56
+ attachments = other_subject.attachments
57
+ expect(attachments.length).to be(0)
58
+ end
59
+ end
60
+ end
35
61
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eml2html
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bartłomiej Bułat
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-05 00:00:00.000000000 Z
11
+ date: 2019-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -118,6 +118,7 @@ extra_rdoc_files: []
118
118
  files:
119
119
  - ".gitignore"
120
120
  - ".rspec"
121
+ - ".travis.yml"
121
122
  - CHANGELOG.md
122
123
  - Gemfile
123
124
  - Guardfile
@@ -132,6 +133,7 @@ files:
132
133
  - lib/eml2html/version.rb
133
134
  - spec/file_helper.rb
134
135
  - spec/fixtures/image.png
136
+ - spec/fixtures/other_format.eml
135
137
  - spec/fixtures/test.eml
136
138
  - spec/lib/eml2html/converter_spec.rb
137
139
  - spec/spec_helper.rb