eml2html 0.0.4 → 0.0.5

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 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