mailsocio_rails 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/Gemfile +6 -0
- data/README.md +7 -33
- data/Rakefile +3 -0
- data/lib/mailsocio_rails/delivery.rb +7 -1
- data/lib/mailsocio_rails/version.rb +1 -1
- data/spec/lib/mailsocio_rails.rb +11 -0
- data/spec/lib/mailsocio_rails/delivery_spec.rb +91 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/support/.keep +0 -0
- data/spec/support/mock_smtp.rb +49 -0
- metadata +22 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62ac0e391ddccb54f35b0cdf6b7840ebf6e412db
|
4
|
+
data.tar.gz: a195b1fb7816a2b16357c03dafc338a3b0253400
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01889521cd0e027b209ed1cc4b0d125719a5c6b564102dd6b35020c06a4385619b1b851f168f6f263bbfdd95cd6a85e673de682aee6a2fa31c6fe1a5fd2f7eff
|
7
|
+
data.tar.gz: 17df29c184f737a689ae6aef1868728abb62d7156b9efd77c97d51aeec3215a6427015bbd06e2d7b947e20f8d51c691bd000ba53484627bdd24690913b4563d6
|
data/.rspec
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
# Mailsocio Rails
|
2
2
|
|
3
|
-
ActionMailer
|
3
|
+
Плагин к ActionMailer для использования mailsocio для отправки электронной почты.
|
4
4
|
|
5
|
-
##
|
5
|
+
## Установка
|
6
6
|
|
7
|
-
|
7
|
+
Строчка в Гемфайл:
|
8
8
|
|
9
9
|
```ruby
|
10
10
|
gem 'mailsocio_rails'
|
11
11
|
```
|
12
12
|
|
13
|
-
|
13
|
+
Ну и выполните `bundle`.
|
14
14
|
|
15
|
-
##
|
15
|
+
## Использование
|
16
16
|
|
17
|
-
|
17
|
+
Сконфигурируйте ActionMailer вот так:
|
18
18
|
|
19
19
|
```ruby
|
20
20
|
# config/application.rb
|
@@ -26,30 +26,4 @@ config.action_mailer.mailsocio_settings = {
|
|
26
26
|
}
|
27
27
|
```
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
## Customization
|
32
|
-
|
33
|
-
You can also override gem defaults:
|
34
|
-
|
35
|
-
```ruby
|
36
|
-
config.action_mailer.mailsocio_settings = {
|
37
|
-
account_id: '<your account id>',
|
38
|
-
api_key: '<your account api key>',
|
39
|
-
|
40
|
-
address: 'app.mailarbor.com', # This can be any smtp server
|
41
|
-
port: 25, # that is capable to
|
42
|
-
domain: 'localhost.localdomain' # deliver emails.
|
43
|
-
|
44
|
-
mailsocio_recipient: 'submit@app.mailarbor.com', # If you change this,
|
45
|
-
# bad things can happen.
|
46
|
-
}
|
47
|
-
```
|
48
|
-
|
49
|
-
## Contributing
|
50
|
-
|
51
|
-
1. Fork it ( https://github.com/[my-github-username]/mailsocio_rails/fork )
|
52
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
53
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
54
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
55
|
-
5. Create a new Pull Request
|
29
|
+
Готово!
|
data/Rakefile
CHANGED
@@ -36,8 +36,14 @@ module MailsocioRails
|
|
36
36
|
|
37
37
|
def addresses_from(mail, *methods)
|
38
38
|
methods.flat_map { |method|
|
39
|
-
(mail.send(method) || []).zip(mail[method]
|
39
|
+
(mail.send(method) || []).zip(really_try(mail[method], :display_names) || [])
|
40
40
|
}
|
41
41
|
end
|
42
|
+
|
43
|
+
def really_try(obj, meth, *args, &block)
|
44
|
+
obj.send(meth, *args, &block)
|
45
|
+
rescue NameError
|
46
|
+
nil
|
47
|
+
end
|
42
48
|
end
|
43
49
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe "mailsocio rails main file" do
|
4
|
+
it "adds delivery_method" do
|
5
|
+
expect(ActionMailer::Base.delivery_methods).to include(mailsocio: MailsocioRails::Delivery)
|
6
|
+
end
|
7
|
+
|
8
|
+
it "adds configuration method" do
|
9
|
+
expect(ActionMailer::Base).to respond_to(:mailsocio_settings=)
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe MailsocioRails::Delivery do
|
4
|
+
before(:each) do
|
5
|
+
# Reset all defaults back to original state
|
6
|
+
Mail.defaults do
|
7
|
+
delivery_method MailsocioRails::Delivery, {
|
8
|
+
account_id: "some_id",
|
9
|
+
api_key: "some_secret"
|
10
|
+
}
|
11
|
+
end
|
12
|
+
MockSMTP.clear_deliveries
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "general usage" do
|
16
|
+
it "delivers to mailsocio gateway" do
|
17
|
+
mail = Mail.deliver do
|
18
|
+
from "roger@moore.com"
|
19
|
+
to "marcel@amont.com"
|
20
|
+
subject "invalid RFC2822"
|
21
|
+
end
|
22
|
+
|
23
|
+
expect(MockSMTP.deliveries[0].to).to eq [Mail.delivery_method.settings[:mailsocio_recipient]]
|
24
|
+
end
|
25
|
+
|
26
|
+
it "wipes to, cc and bcc" do
|
27
|
+
mail = Mail.deliver do
|
28
|
+
from "roger@moore.com"
|
29
|
+
to "marcel@amont.com"
|
30
|
+
cc "moore@amont.com"
|
31
|
+
bcc "luke@amont.com"
|
32
|
+
subject "invalid RFC2822"
|
33
|
+
end
|
34
|
+
|
35
|
+
expect(MockSMTP.deliveries[0].mail.to).not_to eq ["marcel@amont.com"]
|
36
|
+
expect(MockSMTP.deliveries[0].mail.cc).not_to be
|
37
|
+
expect(MockSMTP.deliveries[0].mail.bcc).not_to be
|
38
|
+
end
|
39
|
+
|
40
|
+
it "places to and cc to X-To" do
|
41
|
+
mail = Mail.deliver do
|
42
|
+
from "roger@moore.com"
|
43
|
+
to "Dr.Jones <marcel@amont.com>, <unnamed@gmail.com>"
|
44
|
+
cc "AnotherGuy <mike@twitter.com>"
|
45
|
+
subject "invalid RFC2822"
|
46
|
+
end
|
47
|
+
|
48
|
+
expected_to = {
|
49
|
+
"marcel@amont.com" => { "name": "Dr.Jones" },
|
50
|
+
"unnamed@gmail.com" => { "name" => nil },
|
51
|
+
"mike@twitter.com" => {"name" => "AnotherGuy"}
|
52
|
+
}
|
53
|
+
expect(MockSMTP.deliveries[0].mail["X-To"].to_s).to eq expected_to.to_json
|
54
|
+
end
|
55
|
+
|
56
|
+
it "places bcc to X-Bcc" do
|
57
|
+
mail = Mail.deliver do
|
58
|
+
from "roger@moore.com"
|
59
|
+
to "marcel@amont.com"
|
60
|
+
bcc "luke@amont.com"
|
61
|
+
subject "invalid RFC2822"
|
62
|
+
end
|
63
|
+
|
64
|
+
expect(MockSMTP.deliveries[0].mail["X-Bcc"].to_s).to eq "luke@amont.com"
|
65
|
+
end
|
66
|
+
|
67
|
+
it "preserves from and body" do
|
68
|
+
mail = Mail.deliver do
|
69
|
+
from "roger@moore.com"
|
70
|
+
to "marcel@amont.com"
|
71
|
+
subject "invalid RFC2822"
|
72
|
+
body "Oh come on!"
|
73
|
+
end
|
74
|
+
|
75
|
+
expect(MockSMTP.deliveries[0].from).to eq "roger@moore.com"
|
76
|
+
expect(MockSMTP.deliveries[0].mail.body.to_s).to eq "Oh come on!"
|
77
|
+
end
|
78
|
+
|
79
|
+
it "adds account id and api key" do
|
80
|
+
mail = Mail.deliver do
|
81
|
+
from "roger@moore.com"
|
82
|
+
to "marcel@amont.com"
|
83
|
+
subject "invalid RFC2822"
|
84
|
+
end
|
85
|
+
|
86
|
+
expect(MockSMTP.deliveries[0].mail["X-Account-Id"].to_s).to eq "some_id"
|
87
|
+
expect(MockSMTP.deliveries[0].mail["X-Api-Key"].to_s).to eq "some_secret"
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
|
3
|
+
Bundler.require(:default, :test)
|
4
|
+
|
5
|
+
require (Pathname.new(__FILE__).dirname + '../lib/mailsocio_rails').expand_path
|
6
|
+
|
7
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
class Net::SMTP
|
11
|
+
def self.new(*args)
|
12
|
+
MockSMTP.new
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/spec/support/.keep
ADDED
File without changes
|
@@ -0,0 +1,49 @@
|
|
1
|
+
class MockSMTP
|
2
|
+
|
3
|
+
def self.deliveries
|
4
|
+
@@deliveries
|
5
|
+
end
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@@deliveries = []
|
9
|
+
end
|
10
|
+
|
11
|
+
def sendmail(mail, from, to)
|
12
|
+
@@deliveries << OpenStruct.new(raw: mail, from: from, to: to, mail: Mail.read_from_string(mail))
|
13
|
+
'OK'
|
14
|
+
end
|
15
|
+
|
16
|
+
def start(*args)
|
17
|
+
if block_given?
|
18
|
+
return yield(self)
|
19
|
+
else
|
20
|
+
return self
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def finish
|
25
|
+
return true
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.clear_deliveries
|
29
|
+
@@deliveries = []
|
30
|
+
end
|
31
|
+
|
32
|
+
# in the standard lib: net/smtp.rb line 577
|
33
|
+
# a TypeError is thrown unless this arg is a
|
34
|
+
# kind of OpenSSL::SSL::SSLContext
|
35
|
+
def enable_tls(context = nil)
|
36
|
+
if context && context.kind_of?(OpenSSL::SSL::SSLContext)
|
37
|
+
true
|
38
|
+
elsif context
|
39
|
+
raise TypeError,
|
40
|
+
"wrong argument (#{context.class})! "+
|
41
|
+
"(Expected kind of OpenSSL::SSL::SSLContext)"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def enable_starttls_auto(context = :dummy_ssl_context)
|
46
|
+
true
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mailsocio_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anahoret team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|
@@ -61,21 +61,21 @@ dependencies:
|
|
61
61
|
description: |
|
62
62
|
# Mailsocio Rails
|
63
63
|
|
64
|
-
ActionMailer
|
64
|
+
Плагин к ActionMailer для использования mailsocio для отправки электронной почты.
|
65
65
|
|
66
|
-
##
|
66
|
+
## Установка
|
67
67
|
|
68
|
-
|
68
|
+
Строчка в Гемфайл:
|
69
69
|
|
70
70
|
```ruby
|
71
71
|
gem 'mailsocio_rails'
|
72
72
|
```
|
73
73
|
|
74
|
-
|
74
|
+
Ну и выполните `bundle`.
|
75
75
|
|
76
|
-
##
|
76
|
+
## Использование
|
77
77
|
|
78
|
-
|
78
|
+
Сконфигурируйте ActionMailer вот так:
|
79
79
|
|
80
80
|
```ruby
|
81
81
|
# config/application.rb
|
@@ -87,33 +87,7 @@ description: |
|
|
87
87
|
}
|
88
88
|
```
|
89
89
|
|
90
|
-
|
91
|
-
|
92
|
-
## Customization
|
93
|
-
|
94
|
-
You can also override gem defaults:
|
95
|
-
|
96
|
-
```ruby
|
97
|
-
config.action_mailer.mailsocio_settings = {
|
98
|
-
account_id: '<your account id>',
|
99
|
-
api_key: '<your account api key>',
|
100
|
-
|
101
|
-
address: 'app.mailarbor.com', # This can be any smtp server
|
102
|
-
port: 25, # that is capable to
|
103
|
-
domain: 'localhost.localdomain' # deliver emails.
|
104
|
-
|
105
|
-
mailsocio_recipient: 'submit@app.mailarbor.com', # If you change this,
|
106
|
-
# bad things can happen.
|
107
|
-
}
|
108
|
-
```
|
109
|
-
|
110
|
-
## Contributing
|
111
|
-
|
112
|
-
1. Fork it ( https://github.com/[my-github-username]/mailsocio_rails/fork )
|
113
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
114
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
115
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
116
|
-
5. Create a new Pull Request
|
90
|
+
Готово!
|
117
91
|
email:
|
118
92
|
- dmitriy.kiriyenko@anahoret.com
|
119
93
|
executables: []
|
@@ -121,6 +95,7 @@ extensions: []
|
|
121
95
|
extra_rdoc_files: []
|
122
96
|
files:
|
123
97
|
- ".gitignore"
|
98
|
+
- ".rspec"
|
124
99
|
- Gemfile
|
125
100
|
- LICENSE.txt
|
126
101
|
- README.md
|
@@ -129,6 +104,11 @@ files:
|
|
129
104
|
- lib/mailsocio_rails/delivery.rb
|
130
105
|
- lib/mailsocio_rails/version.rb
|
131
106
|
- mailsocio_rails.gemspec
|
107
|
+
- spec/lib/mailsocio_rails.rb
|
108
|
+
- spec/lib/mailsocio_rails/delivery_spec.rb
|
109
|
+
- spec/spec_helper.rb
|
110
|
+
- spec/support/.keep
|
111
|
+
- spec/support/mock_smtp.rb
|
132
112
|
homepage: http://app.mailarbor.com
|
133
113
|
licenses:
|
134
114
|
- MIT
|
@@ -153,4 +133,10 @@ rubygems_version: 2.4.5
|
|
153
133
|
signing_key:
|
154
134
|
specification_version: 4
|
155
135
|
summary: ActionMailer plugin to use mailsocio to deliver emails
|
156
|
-
test_files:
|
136
|
+
test_files:
|
137
|
+
- spec/lib/mailsocio_rails.rb
|
138
|
+
- spec/lib/mailsocio_rails/delivery_spec.rb
|
139
|
+
- spec/spec_helper.rb
|
140
|
+
- spec/support/.keep
|
141
|
+
- spec/support/mock_smtp.rb
|
142
|
+
has_rdoc:
|