visit_widget_email 0.7.14

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.
Files changed (35) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +70 -0
  3. data/Rakefile +33 -0
  4. data/app/helpers/visit_widget_email/mailer_helper.rb +78 -0
  5. data/app/mailers/visit_widget_email/mailer.rb +5 -0
  6. data/app/mailers/visit_widget_email/mailer_defaults.rb +19 -0
  7. data/app/views/layouts/visit_widget_email/email.html.erb +86 -0
  8. data/app/views/layouts/visit_widget_email/images/apple_app_store_logo_de.png +0 -0
  9. data/app/views/layouts/visit_widget_email/images/apple_app_store_logo_en.png +0 -0
  10. data/app/views/layouts/visit_widget_email/images/apple_app_store_logo_es.png +0 -0
  11. data/app/views/layouts/visit_widget_email/images/apple_app_store_logo_fr.png +0 -0
  12. data/app/views/layouts/visit_widget_email/images/apple_app_store_logo_zn-CH.png +0 -0
  13. data/app/views/layouts/visit_widget_email/images/google_app_store_logo_de.png +0 -0
  14. data/app/views/layouts/visit_widget_email/images/google_app_store_logo_en.png +0 -0
  15. data/app/views/layouts/visit_widget_email/images/google_app_store_logo_es.png +0 -0
  16. data/app/views/layouts/visit_widget_email/images/google_app_store_logo_fr.png +0 -0
  17. data/app/views/layouts/visit_widget_email/images/google_app_store_logo_zn-CH.png +0 -0
  18. data/config/locales/de.yml +5 -0
  19. data/config/locales/en-GB.yml +4 -0
  20. data/config/locales/en.yml +4 -0
  21. data/config/locales/es.yml +4 -0
  22. data/config/locales/fr.yml +4 -0
  23. data/config/locales/it.yml +4 -0
  24. data/config/locales/nl.yml +4 -0
  25. data/config/locales/pt-BR.yml +4 -0
  26. data/config/locales/zh-CN.yml +4 -0
  27. data/lib/tasks/visit_widget_mailer_tasks.rake +4 -0
  28. data/lib/visit_widget_email/commands/send_dynamic_template_email.rb +75 -0
  29. data/lib/visit_widget_email/commands/send_email.rb +30 -0
  30. data/lib/visit_widget_email/email_params.rb +12 -0
  31. data/lib/visit_widget_email/engine.rb +4 -0
  32. data/lib/visit_widget_email/settings.rb +15 -0
  33. data/lib/visit_widget_email/version.rb +3 -0
  34. data/lib/visit_widget_email.rb +9 -0
  35. 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,5 @@
1
+ module VisitWidgetEmail
2
+ class Mailer < ActionMailer::Base
3
+ include VisitWidgetEmail::MailerDefaults
4
+ end
5
+ 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,5 @@
1
+ de:
2
+ email:
3
+ get_mobile_app_line:
4
+ "%{client_name} Steigen Sie in den App Store oder Google Play!"
5
+ copyright_notice: © VisitWidget. Alle Rechte vorbehalten.
@@ -0,0 +1,4 @@
1
+ en-GB:
2
+ email:
3
+ get_mobile_app_line: Get %{client_name} on the App Store or Google Play!
4
+ copyright_notice: "\u00A9 VisitWidget. All Rights Reserved."
@@ -0,0 +1,4 @@
1
+ en:
2
+ email:
3
+ get_mobile_app_line: Get %{client_name} on the App Store or Google Play!
4
+ copyright_notice: "\u00A9 VisitWidget. All Rights Reserved."
@@ -0,0 +1,4 @@
1
+ es:
2
+ email:
3
+ get_mobile_app_line: "¡ %{client_name} Pon a la App Store o a Google Play!"
4
+ copyright_notice: "© VisitWidGet. Reservados todos los derechos."
@@ -0,0 +1,4 @@
1
+ fr:
2
+ email:
3
+ get_mobile_app_line: Obtenez %{client_name} sur l'App Store ou Google Play !
4
+ copyright_notice: © VisitWidget. Tous droits réservés.
@@ -0,0 +1,4 @@
1
+ it:
2
+ email:
3
+ get_mobile_app_line: Ottieni %{client_name} su App Store o Google Play!
4
+ copyright_notice: "\u00A9 VisitWidget. Tutti i diritti riservati."
@@ -0,0 +1,4 @@
1
+ nl:
2
+ email:
3
+ get_mobile_app_line: Ottien %{client_name} su App Store o Google Play!
4
+ copyright_notice: "\u00A9 VisitWidget. Tutti i diritti riservati."
@@ -0,0 +1,4 @@
1
+ pt-BR:
2
+ email:
3
+ get_mobile_app_line: Obtenha %{client_name} na App Store ou no Google Play!
4
+ copyright_notice: "\u00A9 VisitWidget. Todos os direitos reservados."
@@ -0,0 +1,4 @@
1
+ zh-CN:
2
+ email:
3
+ get_mobile_app_line: 进入应用商店或谷歌 玩 %{client_name}
4
+ copyright_notice: â© 访问 Widget。保留所有权利。
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :visit_widget_mailer do
3
+ # # Task goes here
4
+ # end
@@ -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,4 @@
1
+ module VisitWidgetEmail
2
+ class Engine < ::Rails::Engine
3
+ end
4
+ 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,3 @@
1
+ module VisitWidgetEmail
2
+ VERSION = '0.7.14'
3
+ 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: []