safety_mailer 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +15 -3
- data/lib/safety_mailer/railtie.rb +1 -1
- data/lib/safety_mailer/safety_mailer.rb +5 -8
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -19,7 +19,18 @@ Don't forget to <tt>bundle install</tt> to install
|
|
19
19
|
In your environment file <tt>config/environments/development.rb</tt> configure it, and some regular expressions.
|
20
20
|
|
21
21
|
config.action_mailer.delivery_method = :safety_mailer
|
22
|
-
|
22
|
+
config.action_mailer.safety_mailer_settings = {
|
23
|
+
allowed_matchers: [ /mydomain.com/, /mytestacct@gmail.com/, /super_secret_test/ ],
|
24
|
+
delivery_method: :smtp,
|
25
|
+
delivery_method_settings: {
|
26
|
+
:address => "smtp.mydomain.com",
|
27
|
+
:port => 25,
|
28
|
+
:domain => "mydomain.com",
|
29
|
+
:authentication => :plain,
|
30
|
+
:user_name => "mydomain_mailer@mydomain.com",
|
31
|
+
:password => "password"
|
32
|
+
}
|
33
|
+
}
|
23
34
|
|
24
35
|
... and now, email to anyone@mydomain.com, mytestacct@gmail.com, bob+super_secret_test@yahoo.com all get sent
|
25
36
|
and email to other recipients (like the real users in the production database you copied to a test server) is suppressed.
|
@@ -30,9 +41,10 @@ Any user of the Mail gem can configure safety_mailer:
|
|
30
41
|
|
31
42
|
require "safety_mailer"
|
32
43
|
Mail.defaults do
|
33
|
-
delivery_method SafetyMailer::Carrier
|
44
|
+
delivery_method SafetyMailer::Carrier, {
|
45
|
+
... same settings as above
|
46
|
+
}
|
34
47
|
end
|
35
|
-
SafetyMailer::Config.allowed_matchers = [ /mydomain.com/, /mytestacct@gmail.com/, /super_secret_test/ ]
|
36
48
|
|
37
49
|
== License
|
38
50
|
|
@@ -1,21 +1,18 @@
|
|
1
1
|
module SafetyMailer
|
2
|
-
class Config
|
3
|
-
@@allowed_matchers = []
|
4
|
-
cattr_accessor :allowed_matchers
|
5
|
-
@@delivery_method = :smtp
|
6
|
-
cattr_accessor :delivery_method
|
7
|
-
end
|
8
2
|
class Carrier
|
9
3
|
attr_accessor :params
|
10
4
|
def initialize(params = {})
|
11
5
|
self.params = params
|
6
|
+
delivery_method = params[:delivery_method] || :smtp
|
7
|
+
settings = params[:delivery_method_settings] || {}
|
8
|
+
@delivery_method = Mail::Configuration.instance.lookup_delivery_method(delivery_method).new(settings)
|
12
9
|
end
|
13
10
|
def log(msg)
|
14
11
|
Rails.logger.warn(msg) if defined?(Rails)
|
15
12
|
end
|
16
13
|
def deliver!(mail)
|
17
14
|
mail.to = mail.to.reject do |recipient|
|
18
|
-
if
|
15
|
+
if params[:allowed_matchers].any?{ |m| recipient =~ m }
|
19
16
|
false
|
20
17
|
else
|
21
18
|
log "*** safety_mailer suppressing mail to #{recipient}"
|
@@ -26,7 +23,7 @@ module SafetyMailer
|
|
26
23
|
log "*** safety_mailer - no recipients left ... suppressing delivery altogether"
|
27
24
|
else
|
28
25
|
log "*** safety_mailer allowing delivery to #{mail.to}"
|
29
|
-
|
26
|
+
@delivery_method.deliver!(mail)
|
30
27
|
end
|
31
28
|
end
|
32
29
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: safety_mailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Bill Kirtley
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-02-
|
18
|
+
date: 2012-02-12 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description: Specify a domain (or set of domains, or magic word in email address) email is allowed to go to, and email to all other domains is silently dropped. Useful for testing and staging environments.
|