ohmysmtp-rails 0.1.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 056dbcc06cf514f4ea4ab5b24eb3606a7b170ffd485c32aead49088b4e2666ef
4
+ data.tar.gz: 54faecc5475e5fb710bc63242c80e287cfc0be004ba0cdf4eecdcf14eaf428b2
5
+ SHA512:
6
+ metadata.gz: 2fb219e0e85ce7e3df8431b96f2abad253439a5ef51c2d4b8e367c1e6eec6f6b0c1cfb76bcbf8c2cf4090171dfdedf256689c206b0edad17355b3c11fb71db36
7
+ data.tar.gz: 29d62a2f03de60de38187c8e6dfcf4509d34b04dcbbecb05c1bbae757156f2ce72ee7184f9faf271841038537a04c980900f6b941ebdec76e1a9841f11753d96
@@ -0,0 +1,20 @@
1
+ Copyright 2020 OhMySMTP
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,92 @@
1
+ # OhMySMTP::Rails
2
+
3
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
4
+
5
+
6
+ [OhMySMTP](https://ohmysmtp.com) lets you send transactional emails from your app over an easy to use API.
7
+
8
+ The OhMySMTP Rails Gem is a plug in for ActionMailer to send emails via [OhMySMTP](https://ohmysmtp.com) to make sending emails from Rails apps super simple.
9
+
10
+ ## Usage
11
+
12
+ Once installed and configured, continue to send emails using [ActionMailer](https://guides.rubyonrails.org/action_mailer_basics.html) like normal.
13
+
14
+ ## Requirements
15
+
16
+ You will need an OhMySMTP account with a verified domain and organization with an active plan.
17
+
18
+ ## Installation
19
+
20
+ ### Account Setup
21
+
22
+ Set up an account at [OhMySMTP](https://app.ohmysmtp.com/users/sign_up) and complete the Onboarding steps
23
+
24
+ ### Gem Installation
25
+
26
+ Add this line to your application's Gemfile:
27
+
28
+ ```ruby
29
+ gem 'ohmysmtp-rails'
30
+ ```
31
+
32
+ And then execute:
33
+ ```bash
34
+ $ bundle
35
+ ```
36
+
37
+ Or install it yourself as:
38
+ ```bash
39
+ $ gem install ohmysmtp-rails
40
+ ```
41
+
42
+ ### Configure the Gem
43
+
44
+ First you will need to retrieve your API token for your sending domain from [OhMySMTP](https://app.ohmysmtp.com). You can find it under Organization -> Domain -> API Tokens
45
+
46
+ #### Rails 6
47
+
48
+ Use the encrypted secret management to save your API Token to `config/credentials.yml.enc` by running the following:
49
+
50
+ ```bash
51
+ rails secret
52
+ rails credentials:edit
53
+ ```
54
+
55
+ Then add your token:
56
+
57
+ ```yaml
58
+ ohmysmtp_api_token: "TOKEN_GOES_HERE"
59
+ ```
60
+
61
+ Set OhMySMTP as your mail delivery method in `config/application.rb`:
62
+
63
+ ```ruby
64
+ config.action_mailer.delivery_method = :ohmysmtp
65
+ config.action_mailer.ohmysmtp_settings = { api_token: Rails.application.credentials.ohmysmtp_api_token }
66
+ ```
67
+
68
+ #### Rails 3-5
69
+
70
+ Save your API Token to `config/secrets.yml` using a text editor:
71
+
72
+ ```yaml
73
+ ohmysmtp_api_token: "TOKEN_GOES_HERE"
74
+ ```
75
+
76
+ Set OhMySMTP as your mail delivery method in `config/application.rb`:
77
+
78
+ ```ruby
79
+ config.action_mailer.delivery_method = :ohmysmtp
80
+ config.action_mailer.ohmysmtp_settings = { :api_token => Rails.application.secrets.ohmysmtp_api_token }
81
+ ```
82
+
83
+ ## Support
84
+
85
+ For support please check the [OhMySMTP Documentation](https://docs.ohmysmtp.com) or contact us at support@ohmysmtp.com
86
+
87
+ ## Contributing
88
+
89
+ Pull requests always welcome
90
+
91
+ ## License
92
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -0,0 +1,27 @@
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 = 'OhMySMTP::Rails'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.md')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ require 'bundler/gem_tasks'
18
+
19
+ require 'rake/testtask'
20
+
21
+ Rake::TestTask.new(:test) do |t|
22
+ t.libs << 'test'
23
+ t.pattern = 'test/**/*_test.rb'
24
+ t.verbose = false
25
+ end
26
+
27
+ task default: :test
@@ -0,0 +1,62 @@
1
+ require 'action_mailer'
2
+ require 'httparty'
3
+ require 'uri'
4
+ require 'json'
5
+ require 'ohmysmtp-rails/version'
6
+ require 'ohmysmtp-rails/railtie' if defined? Rails
7
+
8
+ module OhMySMTP
9
+ # OhMySMTP ActionMailer delivery method
10
+ class DeliveryMethod
11
+ attr_accessor :settings
12
+
13
+ def initialize(values)
14
+ check_api_token(values)
15
+ self.settings = {}.merge!(values)
16
+ end
17
+
18
+ def deliver!(mail)
19
+ check_delivery_params(mail)
20
+ result = HTTParty.post(
21
+ 'https://app.ohmysmtp.com/api/v1/send',
22
+ body: {
23
+ from: mail.from.join(','),
24
+ to: mail.to.join(','),
25
+ subject: mail.subject,
26
+ htmlbody: mail.body,
27
+ cc: mail.cc&.join(','),
28
+ bcc: mail.bcc&.join(','),
29
+ replyto: mail.reply_to
30
+ }.to_json,
31
+ headers: {
32
+ 'User-Agent' => "OhMySMTP Rails Gem v#{OhMySMTP::Rails::VERSION}",
33
+ 'Accept' => 'application/json',
34
+ 'Content-Type' => 'application/json',
35
+ 'Ohmysmtp-Server-Token' => settings[:api_token]
36
+ }
37
+ )
38
+
39
+ handle_response(result)
40
+ end
41
+
42
+ private
43
+
44
+ def check_api_token(values)
45
+ return if values[:api_token].present?
46
+
47
+ raise ArgumentError, 'OhMySMTP API token is not set'
48
+ end
49
+
50
+ def check_delivery_params(mail)
51
+ return unless mail.from.nil? || mail.to.nil?
52
+
53
+ raise ArgumentError, 'Missing to or from address in email'
54
+ end
55
+
56
+ def handle_response(result)
57
+ return unless result.code != 200
58
+
59
+ raise result['error']
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,7 @@
1
+ module OhMySMTP
2
+ class Railtie < ::Rails::Railtie
3
+ initializer 'ohmysmtp.add_delivery_method', before: 'action_mailer.set_configs' do
4
+ ActionMailer::Base.add_delivery_method(:ohmysmtp, OhMySMTP::DeliveryMethod)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ module OhMySMTP
2
+ module Rails
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,140 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ohmysmtp-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - OhMySMTP
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-09-17 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.2
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 6.0.2.2
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 6.0.2
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 6.0.2.2
33
+ - !ruby/object:Gem::Dependency
34
+ name: actionmailer
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 3.0.0
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 3.0.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: httparty
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 0.18.1
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 0.18.1
61
+ - !ruby/object:Gem::Dependency
62
+ name: byebug
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: pry
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: sqlite3
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ description: The OhMySMTP Rails Gem is a plug in for ActionMailer to send emails via
104
+ OhMySMTP to make sending emails from Rails apps super simple.
105
+ email:
106
+ - support@ohmysmtp.com
107
+ executables: []
108
+ extensions: []
109
+ extra_rdoc_files: []
110
+ files:
111
+ - MIT-LICENSE
112
+ - README.md
113
+ - Rakefile
114
+ - lib/ohmysmtp-rails.rb
115
+ - lib/ohmysmtp-rails/railtie.rb
116
+ - lib/ohmysmtp-rails/version.rb
117
+ homepage: https://ohmysmtp.com
118
+ licenses:
119
+ - MIT
120
+ metadata: {}
121
+ post_install_message:
122
+ rdoc_options: []
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ requirements: []
136
+ rubygems_version: 3.1.2
137
+ signing_key:
138
+ specification_version: 4
139
+ summary: Lets you send transactional emails from your app over an easy to use API
140
+ test_files: []