bootstrap-email 1.3.0 → 1.3.1
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 +4 -4
- data/VERSION +1 -1
- data/lib/bootstrap-email/rails/mail_builder.rb +70 -18
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0af8d16392d189b851cad1448686b2fda2a322b61c0b98553090394a598d0b32
|
4
|
+
data.tar.gz: '009e81f356b5f8519113b32f44b1c82cac62692b1bf035b2449da4dea46e60a0'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f2f9702d22b020da0968896dd7e3134a716c450492569fd3597676e4ad8305c340ba7abc26bd93b6d0b78b5f60de70a0d7bca2b0f310ccd15c73763e0bc3ca2
|
7
|
+
data.tar.gz: fd7db09c66be97a4082768c8b66025f714932dc356bac007033bb7f7a333d722d45caac63818cfca54344c23cf74bbd882045fc8cfeb11e2fef50217799a34a3
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.1
|
@@ -3,39 +3,50 @@
|
|
3
3
|
module BootstrapEmail
|
4
4
|
module Rails
|
5
5
|
class MailBuilder
|
6
|
-
attr_reader :
|
6
|
+
attr_reader :message, :bootstrap_email
|
7
7
|
|
8
8
|
def self.perform(mail)
|
9
|
-
new(mail) if mail
|
9
|
+
new(mail).perform if mail
|
10
10
|
end
|
11
11
|
|
12
|
-
private
|
13
|
-
|
14
12
|
def initialize(mail)
|
15
|
-
@
|
16
|
-
@bootstrap_email = BootstrapEmail::Compiler.new(html_part, type: :string)
|
17
|
-
perform
|
13
|
+
@message = mail
|
14
|
+
@bootstrap_email = BootstrapEmail::Compiler.new(html_part.decoded, type: :string)
|
18
15
|
end
|
19
16
|
|
20
17
|
def perform
|
21
|
-
|
22
|
-
|
18
|
+
replace_html_part(generate_html_part_replacement)
|
19
|
+
message
|
23
20
|
end
|
24
21
|
|
25
|
-
|
26
|
-
|
22
|
+
private
|
23
|
+
|
24
|
+
# Much of this files derives from: https://github.com/fphilipe/premailer-rails/blob/2870060f9740de1c3f7a1da0acfc7b88e3181077/lib/premailer/rails/hook.rb
|
25
|
+
|
26
|
+
def message_contains_html?
|
27
|
+
html_part.present?
|
28
|
+
end
|
29
|
+
|
30
|
+
# Returns true if the message itself has a content type of text/html, thus
|
31
|
+
# it does not contain other parts such as alternatives and attachments.
|
32
|
+
def pure_html_message?
|
33
|
+
message.content_type&.include?('text/html')
|
27
34
|
end
|
28
35
|
|
29
|
-
def
|
30
|
-
if
|
31
|
-
|
36
|
+
def generate_html_part_replacement
|
37
|
+
if generate_text_part?
|
38
|
+
generate_alternative_part
|
32
39
|
else
|
33
|
-
html = bootstrap_email.
|
34
|
-
|
40
|
+
html = bootstrap_email.perform_html_compile
|
41
|
+
build_html_part(html)
|
35
42
|
end
|
36
43
|
end
|
37
44
|
|
38
|
-
def
|
45
|
+
def generate_text_part?
|
46
|
+
BootstrapEmail.static_config.generate_rails_text_part && !message.text_part
|
47
|
+
end
|
48
|
+
|
49
|
+
def generate_alternative_part
|
39
50
|
compiled = bootstrap_email.perform_multipart_compile
|
40
51
|
|
41
52
|
part = Mail::Part.new(content_type: 'multipart/alternative')
|
@@ -47,7 +58,7 @@ module BootstrapEmail
|
|
47
58
|
|
48
59
|
def build_html_part(html)
|
49
60
|
Mail::Part.new do
|
50
|
-
content_type
|
61
|
+
content_type 'text/html; charset=UTF-8'
|
51
62
|
body html
|
52
63
|
end
|
53
64
|
end
|
@@ -58,6 +69,47 @@ module BootstrapEmail
|
|
58
69
|
body text
|
59
70
|
end
|
60
71
|
end
|
72
|
+
|
73
|
+
def html_part
|
74
|
+
if pure_html_message?
|
75
|
+
message
|
76
|
+
else
|
77
|
+
message.html_part
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def replace_html_part(new_part)
|
82
|
+
if pure_html_message?
|
83
|
+
replace_in_pure_html_message(new_part)
|
84
|
+
else
|
85
|
+
replace_part_in_list(message.parts, html_part, new_part)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# If the new part is a pure text/html part, the body and its content type
|
90
|
+
# are used for the message. If the new part is
|
91
|
+
def replace_in_pure_html_message(new_part)
|
92
|
+
if new_part.content_type.include?('text/html')
|
93
|
+
message.body = new_part.decoded
|
94
|
+
message.content_type = new_part.content_type
|
95
|
+
else
|
96
|
+
message.body = nil
|
97
|
+
message.content_type = new_part.content_type
|
98
|
+
new_part.parts.each do |part|
|
99
|
+
message.add_part(part)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def replace_part_in_list(parts_list, old_part, new_part)
|
105
|
+
if (index = parts_list.index(old_part))
|
106
|
+
parts_list[index] = new_part
|
107
|
+
else
|
108
|
+
parts_list.any? do |part|
|
109
|
+
replace_part_in_list(part.parts, old_part, new_part) if part.respond_to?(:parts)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
61
113
|
end
|
62
114
|
end
|
63
115
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootstrap-email
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stuart Yamartino
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-07-
|
11
|
+
date: 2022-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: htmlbeautifier
|