visit_widget_email 0.7.14

Sign up to get free protection for your applications and to get access to all the features.
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: []