visit_widget_email 0.7.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +70 -0
- data/Rakefile +33 -0
- data/app/helpers/visit_widget_email/mailer_helper.rb +78 -0
- data/app/mailers/visit_widget_email/mailer.rb +5 -0
- data/app/mailers/visit_widget_email/mailer_defaults.rb +19 -0
- data/app/views/layouts/visit_widget_email/email.html.erb +86 -0
- data/app/views/layouts/visit_widget_email/images/apple_app_store_logo_de.png +0 -0
- data/app/views/layouts/visit_widget_email/images/apple_app_store_logo_en.png +0 -0
- data/app/views/layouts/visit_widget_email/images/apple_app_store_logo_es.png +0 -0
- data/app/views/layouts/visit_widget_email/images/apple_app_store_logo_fr.png +0 -0
- data/app/views/layouts/visit_widget_email/images/apple_app_store_logo_zn-CH.png +0 -0
- data/app/views/layouts/visit_widget_email/images/google_app_store_logo_de.png +0 -0
- data/app/views/layouts/visit_widget_email/images/google_app_store_logo_en.png +0 -0
- data/app/views/layouts/visit_widget_email/images/google_app_store_logo_es.png +0 -0
- data/app/views/layouts/visit_widget_email/images/google_app_store_logo_fr.png +0 -0
- data/app/views/layouts/visit_widget_email/images/google_app_store_logo_zn-CH.png +0 -0
- data/config/locales/de.yml +5 -0
- data/config/locales/en-GB.yml +4 -0
- data/config/locales/en.yml +4 -0
- data/config/locales/es.yml +4 -0
- data/config/locales/fr.yml +4 -0
- data/config/locales/it.yml +4 -0
- data/config/locales/nl.yml +4 -0
- data/config/locales/pt-BR.yml +4 -0
- data/config/locales/zh-CN.yml +4 -0
- data/lib/tasks/visit_widget_mailer_tasks.rake +4 -0
- data/lib/visit_widget_email/commands/send_dynamic_template_email.rb +75 -0
- data/lib/visit_widget_email/commands/send_email.rb +30 -0
- data/lib/visit_widget_email/email_params.rb +12 -0
- data/lib/visit_widget_email/engine.rb +4 -0
- data/lib/visit_widget_email/settings.rb +15 -0
- data/lib/visit_widget_email/version.rb +3 -0
- data/lib/visit_widget_email.rb +9 -0
- metadata +106 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 91d0baeed3fc442f160e0f82fd051b0e21f7b66f14d25f8d9b113dfdfeaa154a
|
4
|
+
data.tar.gz: df5b79d1c3f59b1f1d5a1ed4171bfa4c03157c0b9286209e402a6aba14ce88f5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1ae9d37e5b4d4f6a6a7434f1ff61a63a4f00038cd31d3a945e2522455b670e8159cd57603008fce3f27f7c8504d85f579a7122725d80b2a965660fef52e32dda
|
7
|
+
data.tar.gz: d87a24333af7d4177a495eb4f6eed296466b7be766feaa33fc192f678b91bc0ef15eb6f1ccfcba701133e664a691eec377e4d8ea1e1673c156d0d9ecc4649eb2
|
data/README.md
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
# VisitWidgetMailer
|
2
|
+
|
3
|
+
Short description and motivation.
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
How to use my plugin.
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Add this line to your application's Gemfile:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
gem 'visit_widget_email'
|
15
|
+
```
|
16
|
+
|
17
|
+
And then execute:
|
18
|
+
|
19
|
+
```bash
|
20
|
+
$ bundle
|
21
|
+
```
|
22
|
+
|
23
|
+
Or install it yourself as:
|
24
|
+
|
25
|
+
```bash
|
26
|
+
$ gem install visit_widget_email
|
27
|
+
```
|
28
|
+
|
29
|
+
## Usage
|
30
|
+
|
31
|
+
### Command and Query
|
32
|
+
|
33
|
+
`VisitWidgetEmail::Commands::SendEmail` is the command used to send emails
|
34
|
+
anywhere in the app. The constructor takes these params:
|
35
|
+
|
36
|
+
`mailer_class_name, mailer_action, client_id, params`
|
37
|
+
|
38
|
+
Where params are the custom parameters for that particular mailer.
|
39
|
+
|
40
|
+
For the command to work, you'll need to implement the
|
41
|
+
`VisitWidgetEmail::Queries::GetEmailParamsFromClient` class. This query should
|
42
|
+
have an `execute` method that takes in the client id and returns a
|
43
|
+
VisitWidgetEmail::EmailParams object with these attributes set:
|
44
|
+
|
45
|
+
- primary_color
|
46
|
+
- host
|
47
|
+
- logo_url
|
48
|
+
- client_name
|
49
|
+
- enable_email_links
|
50
|
+
- ios_itunes_app_id
|
51
|
+
- android_bundle_identifier
|
52
|
+
|
53
|
+
### Mailers
|
54
|
+
|
55
|
+
You'll want to have your `ApplicationMailer` inherit from `VisitWidgetEmail::Mailer`:
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
class ApplicationMailer < VisitWidgetEmail::Mailer
|
59
|
+
end
|
60
|
+
```
|
61
|
+
|
62
|
+
Your mailer methods should have `email_params` as the first parameter.
|
63
|
+
|
64
|
+
## Contributing
|
65
|
+
|
66
|
+
Contribution directions go here.
|
67
|
+
|
68
|
+
## License
|
69
|
+
|
70
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'VisitWidgetEmail'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.md')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
load 'rails/tasks/statistics.rake'
|
21
|
+
|
22
|
+
require 'bundler/gem_tasks'
|
23
|
+
|
24
|
+
require 'rake/testtask'
|
25
|
+
|
26
|
+
Rake::TestTask.new(:test) do |t|
|
27
|
+
t.libs << 'test'
|
28
|
+
t.pattern = 'test/**/*_test.rb'
|
29
|
+
t.verbose = false
|
30
|
+
t.warning = false
|
31
|
+
end
|
32
|
+
|
33
|
+
task default: :test
|
@@ -0,0 +1,78 @@
|
|
1
|
+
module VisitWidgetEmail
|
2
|
+
module MailerHelper
|
3
|
+
def primary_button(url, text, color, width=180)
|
4
|
+
html = '<a href="' + url + '"
|
5
|
+
style="width: ' + width.to_s + 'px;
|
6
|
+
display: block;
|
7
|
+
height: 40px;
|
8
|
+
margin: 0 auto 0 auto;
|
9
|
+
margin-top: 20px;
|
10
|
+
border-radius: 5px;
|
11
|
+
text-decoration: none;
|
12
|
+
background-color: ' + color + ';">
|
13
|
+
<span
|
14
|
+
style="display: block;
|
15
|
+
text-align: center;
|
16
|
+
color: white;
|
17
|
+
padding-top: 12px;
|
18
|
+
font-family: ''open sans'', helvetica, arial, sans-serif;"
|
19
|
+
>' +
|
20
|
+
text +
|
21
|
+
'</span>' +
|
22
|
+
'</a>'
|
23
|
+
|
24
|
+
return html.html_safe
|
25
|
+
end
|
26
|
+
|
27
|
+
def title(&block)
|
28
|
+
html = '<p style="font-size: 120%; text-align: center;"><strong>' +
|
29
|
+
+ capture(&block) + '</strong></p>'
|
30
|
+
|
31
|
+
html.html_safe
|
32
|
+
end
|
33
|
+
|
34
|
+
def primary_content(&block)
|
35
|
+
html =
|
36
|
+
'<div style="border: 1px solid #656A71;
|
37
|
+
width: 90%;
|
38
|
+
margin: 0 auto 0 auto;
|
39
|
+
background-color: white;
|
40
|
+
-webkit-box-shadow: 0px 0px 6px 0px rgba(50, 50, 50, 0.2);
|
41
|
+
-moz-box-shadow: 0px 0px 6px 0px rgba(50, 50, 50, 0.2);
|
42
|
+
box-shadow: 0px 0px 6px 0px rgba(50, 50, 50, 0.2);">' +
|
43
|
+
capture(&block) + '</div>'
|
44
|
+
|
45
|
+
html.html_safe
|
46
|
+
end
|
47
|
+
|
48
|
+
def message(&block)
|
49
|
+
html =
|
50
|
+
'<div class="message"
|
51
|
+
style="text-align: center;
|
52
|
+
font-family: ''open sans'', helvetica, arial, sans-serif;
|
53
|
+
font-weight: 100;
|
54
|
+
color: #656A71;
|
55
|
+
margin-top: 16px;
|
56
|
+
margin-bottom: 16px;
|
57
|
+
padding-left: 10px;
|
58
|
+
padding-right: 10px;">' +
|
59
|
+
capture(&block) + '</div>'
|
60
|
+
|
61
|
+
html.html_safe
|
62
|
+
end
|
63
|
+
|
64
|
+
def message_with_centered_text_and_left_justified(&block)
|
65
|
+
html =
|
66
|
+
'<div style="text-align: center;">
|
67
|
+
<div class="message"
|
68
|
+
style="font-family: ''open sans'', helvetica, arial, sans-serif;
|
69
|
+
font-weight: 100;
|
70
|
+
color: #656A71; padding-left: 10px; padding-right: 10px;
|
71
|
+
display: inline-block; text-align: left;">' +
|
72
|
+
capture(&block) + '</div></div><br />'
|
73
|
+
|
74
|
+
html.html_safe
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module VisitWidgetEmail
|
2
|
+
module MailerDefaults
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
helper "visit_widget_email/mailer"
|
7
|
+
layout 'layouts/visit_widget_email/email'
|
8
|
+
before_action :set_sendgrid_header
|
9
|
+
default from: Proc.new {
|
10
|
+
VisitWidgetEmail::Settings.no_reply_email_address(@email_params)
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
def set_sendgrid_header
|
15
|
+
headers['X-SMTPAPI'] = '{"asm_group_id": "' +
|
16
|
+
ENV["SENDGRID_ALL_UNSUBSCRIBE_GROUP_ID"].to_s + '"}'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<div style="background-color: #F7F7F7">
|
8
|
+
<div class="header"
|
9
|
+
style="width: 100%;
|
10
|
+
background-color: <%= @email_params.primary_color %>;
|
11
|
+
height: 50px;"
|
12
|
+
>
|
13
|
+
<%= link_to root_url(host: @email_params.host) do %>
|
14
|
+
<img src="<%= @email_params.logo_url %>"
|
15
|
+
style="display: block; margin: 0 auto 0 auto;" />
|
16
|
+
<% end %>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<%= yield %>
|
20
|
+
<% if @email_params.enable_email_links %>
|
21
|
+
<p style="text-align: center;">
|
22
|
+
<strong>
|
23
|
+
<%= t("email.get_mobile_app_line",
|
24
|
+
client_name: @email_params.client_name) %>
|
25
|
+
</strong>
|
26
|
+
</p>
|
27
|
+
<table style="margin-left: auto; margin-right: auto;
|
28
|
+
border-collapse: collapse;">
|
29
|
+
<tr>
|
30
|
+
<% if @email_params.ios_itunes_app_id.present? %>
|
31
|
+
<td style="padding: 0; margin: 0;">
|
32
|
+
<a href="<%= "https://itunes.apple.com/us/app/id#{@email_params.ios_itunes_app_id}" %>">
|
33
|
+
<% apple_logo_file_name =
|
34
|
+
"apple_app_store_logo_#{I18n.locale}.png" %>
|
35
|
+
<% attachments.inline[apple_logo_file_name] =
|
36
|
+
File.read(
|
37
|
+
File.expand_path("images/#{apple_logo_file_name}",
|
38
|
+
__dir__)
|
39
|
+
)
|
40
|
+
%>
|
41
|
+
<%= image_tag attachments[apple_logo_file_name].url,
|
42
|
+
style: "width: 168px; height: 50px; margin-right: 8px;" %>
|
43
|
+
</a>
|
44
|
+
</td>
|
45
|
+
<% end %>
|
46
|
+
<% if @email_params.android_bundle_identifier.present? %>
|
47
|
+
<td style="padding: 0; margin: 0;">
|
48
|
+
<a href="<%=
|
49
|
+
"http://play.google.com/store/apps/details?id="\
|
50
|
+
"#{@email_params.android_bundle_identifier}" %>">
|
51
|
+
<% google_logo_file_name =
|
52
|
+
"google_app_store_logo_#{I18n.locale}.png" %>
|
53
|
+
<% attachments.inline[google_logo_file_name] =
|
54
|
+
File.read(
|
55
|
+
File.expand_path("images/#{google_logo_file_name}",
|
56
|
+
__dir__)
|
57
|
+
)
|
58
|
+
%>
|
59
|
+
<%= image_tag attachments[google_logo_file_name].url,
|
60
|
+
style: "width: 168px; height: 50px;" %>
|
61
|
+
</a>
|
62
|
+
</td>
|
63
|
+
<% end %>
|
64
|
+
</tr>
|
65
|
+
</table>
|
66
|
+
<% end %>
|
67
|
+
</div>
|
68
|
+
|
69
|
+
<div style="margin-top: 50px; border-top: 1px solid #D3D3D3;
|
70
|
+
background-color: white;">
|
71
|
+
<div class="footer_container" style="width: 90%;">
|
72
|
+
|
73
|
+
<p class="unsuscribe" style="text-decoration: none; color: #656A71;
|
74
|
+
font-family: 'open sans', helvetica, arial, sans-serif;
|
75
|
+
font-size: 14px; font-weight: 100;">
|
76
|
+
<%%asm_preferences_url%>
|
77
|
+
</p>
|
78
|
+
<p class="copywrite" style="text-decoration: none; color: #656A71;
|
79
|
+
font-family: 'open sans', helvetica, arial, sans-serif;
|
80
|
+
font-size: 14px; font-weight: 100;">
|
81
|
+
<%= t("email.copyright_notice") %>
|
82
|
+
</p>
|
83
|
+
</div>
|
84
|
+
</div>
|
85
|
+
</body>
|
86
|
+
</html>
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'sendgrid-ruby'
|
2
|
+
|
3
|
+
module VisitWidgetEmail
|
4
|
+
module Commands
|
5
|
+
class SendDynamicTemplateEmail
|
6
|
+
include SendGrid
|
7
|
+
|
8
|
+
def initialize(template_id, to, from = nil, dynamic_data = {}, locale = "en", attachments=[])
|
9
|
+
@template_id = template_id
|
10
|
+
@to = to
|
11
|
+
@from = from
|
12
|
+
@dynamic_data = dynamic_data
|
13
|
+
@locale = locale
|
14
|
+
@attachments = attachments
|
15
|
+
end
|
16
|
+
|
17
|
+
def execute
|
18
|
+
validate()
|
19
|
+
|
20
|
+
data = {
|
21
|
+
"personalizations": [
|
22
|
+
{
|
23
|
+
"to": [
|
24
|
+
{
|
25
|
+
"email": @to
|
26
|
+
}
|
27
|
+
],
|
28
|
+
"dynamic_template_data": @dynamic_data
|
29
|
+
}
|
30
|
+
],
|
31
|
+
"template_id": @template_id
|
32
|
+
}
|
33
|
+
|
34
|
+
if @from.present?
|
35
|
+
data[:from] = {
|
36
|
+
"email": @from
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
40
|
+
if @attachments.present?
|
41
|
+
data[:attachments] = @attachments
|
42
|
+
end
|
43
|
+
|
44
|
+
send_grid = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
|
45
|
+
|
46
|
+
response = send_grid.client.mail._("send").post(request_body: data)
|
47
|
+
error_message = "none"
|
48
|
+
if (response.body != "")
|
49
|
+
error = response.parsed_body[:errors].length > 0 ? response.parsed_body[:errors][0] : nil
|
50
|
+
error_message = error.nil? ? "" : error[:message]
|
51
|
+
end
|
52
|
+
|
53
|
+
# issue in certain environments with the api key, include small partial to verify key used
|
54
|
+
Rails.logger.info("Email response - to: #{@to}, status: #{response.status_code}, "\
|
55
|
+
"error message: #{error_message}, key: #{ENV['SENDGRID_API_KEY'][0...8]}, "\
|
56
|
+
"from: #{@from}, template_id: #{@template_id}")
|
57
|
+
|
58
|
+
return response
|
59
|
+
end
|
60
|
+
|
61
|
+
private
|
62
|
+
|
63
|
+
def validate
|
64
|
+
if @template_id.nil?
|
65
|
+
raise Exception.new "\"template_id\" is required"
|
66
|
+
end
|
67
|
+
|
68
|
+
if @to.nil?
|
69
|
+
raise Exception.new "\"to\" is required"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module VisitWidgetEmail
|
2
|
+
module Commands
|
3
|
+
class SendEmail
|
4
|
+
def initialize(mailer_params, client_id, locale, params)
|
5
|
+
@mailer_params = mailer_params.symbolize_keys
|
6
|
+
@client_id = client_id
|
7
|
+
@locale = locale
|
8
|
+
@params = params
|
9
|
+
end
|
10
|
+
|
11
|
+
def execute
|
12
|
+
I18n.with_locale(@locale) do
|
13
|
+
mailer_class= @mailer_params[:class_name].constantize
|
14
|
+
|
15
|
+
params = [create_app_email_params] + @params
|
16
|
+
message_delivery = mailer_class.send(@mailer_params[:action],
|
17
|
+
*params)
|
18
|
+
message_delivery.deliver_now
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def create_app_email_params
|
25
|
+
query = VisitWidgetEmail::Queries::GetEmailParamsFromClient.new
|
26
|
+
return query.execute(@client_id)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module VisitWidgetEmail
|
2
|
+
class EmailParams
|
3
|
+
attr_accessor :primary_color
|
4
|
+
attr_accessor :host
|
5
|
+
attr_accessor :logo_url
|
6
|
+
attr_accessor :client_name
|
7
|
+
attr_accessor :ios_itunes_app_id
|
8
|
+
attr_accessor :android_bundle_identifier
|
9
|
+
attr_accessor :enable_email_links
|
10
|
+
attr_accessor :host_with_optional_env
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module VisitWidgetEmail
|
2
|
+
class Settings
|
3
|
+
def self.no_reply_email_address(email_params)
|
4
|
+
return "no-reply@#{email_params.host}"
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.unsubscribe_email_address
|
8
|
+
return "contact@visitwidget.com"
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.default_domain
|
12
|
+
"visitwidget.com"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require "visit_widget_email/engine"
|
2
|
+
require "visit_widget_email/settings"
|
3
|
+
require "visit_widget_email/email_params"
|
4
|
+
require "visit_widget_email/commands/send_email"
|
5
|
+
require "visit_widget_email/commands/send_dynamic_template_email"
|
6
|
+
|
7
|
+
module VisitWidgetEmail
|
8
|
+
# Your code goes here...
|
9
|
+
end
|
metadata
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: visit_widget_email
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.7.14
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Visit Widget
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-11-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '6.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '6.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sendgrid-ruby
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '6.6'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '6.6'
|
41
|
+
description: Provides a email layout, mailer, and helper for emailsending in Visit
|
42
|
+
Widget apps.
|
43
|
+
email:
|
44
|
+
- development@visitwidget.com
|
45
|
+
executables: []
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- README.md
|
50
|
+
- Rakefile
|
51
|
+
- app/helpers/visit_widget_email/mailer_helper.rb
|
52
|
+
- app/mailers/visit_widget_email/mailer.rb
|
53
|
+
- app/mailers/visit_widget_email/mailer_defaults.rb
|
54
|
+
- app/views/layouts/visit_widget_email/email.html.erb
|
55
|
+
- app/views/layouts/visit_widget_email/images/apple_app_store_logo_de.png
|
56
|
+
- app/views/layouts/visit_widget_email/images/apple_app_store_logo_en.png
|
57
|
+
- app/views/layouts/visit_widget_email/images/apple_app_store_logo_es.png
|
58
|
+
- app/views/layouts/visit_widget_email/images/apple_app_store_logo_fr.png
|
59
|
+
- app/views/layouts/visit_widget_email/images/apple_app_store_logo_zn-CH.png
|
60
|
+
- app/views/layouts/visit_widget_email/images/google_app_store_logo_de.png
|
61
|
+
- app/views/layouts/visit_widget_email/images/google_app_store_logo_en.png
|
62
|
+
- app/views/layouts/visit_widget_email/images/google_app_store_logo_es.png
|
63
|
+
- app/views/layouts/visit_widget_email/images/google_app_store_logo_fr.png
|
64
|
+
- app/views/layouts/visit_widget_email/images/google_app_store_logo_zn-CH.png
|
65
|
+
- config/locales/de.yml
|
66
|
+
- config/locales/en-GB.yml
|
67
|
+
- config/locales/en.yml
|
68
|
+
- config/locales/es.yml
|
69
|
+
- config/locales/fr.yml
|
70
|
+
- config/locales/it.yml
|
71
|
+
- config/locales/nl.yml
|
72
|
+
- config/locales/pt-BR.yml
|
73
|
+
- config/locales/zh-CN.yml
|
74
|
+
- lib/tasks/visit_widget_mailer_tasks.rake
|
75
|
+
- lib/visit_widget_email.rb
|
76
|
+
- lib/visit_widget_email/commands/send_dynamic_template_email.rb
|
77
|
+
- lib/visit_widget_email/commands/send_email.rb
|
78
|
+
- lib/visit_widget_email/email_params.rb
|
79
|
+
- lib/visit_widget_email/engine.rb
|
80
|
+
- lib/visit_widget_email/settings.rb
|
81
|
+
- lib/visit_widget_email/version.rb
|
82
|
+
homepage: https://github.com/visit-widget/visit_widget_email
|
83
|
+
licenses:
|
84
|
+
- Visit Widget LLC use only
|
85
|
+
metadata: {}
|
86
|
+
post_install_message:
|
87
|
+
rdoc_options: []
|
88
|
+
require_paths:
|
89
|
+
- lib
|
90
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
requirements: []
|
101
|
+
rubygems_version: 3.2.3
|
102
|
+
signing_key:
|
103
|
+
specification_version: 4
|
104
|
+
summary: Provides a email layout, mailer, and helper for emailsending in Visit Widget
|
105
|
+
apps.
|
106
|
+
test_files: []
|