ar_mailer 1.3.3 → 1.4.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.
- data.tar.gz.sig +0 -0
- data/History.txt +14 -8
- data/Manifest.txt +1 -1
- data/Rakefile +7 -8
- data/lib/action_mailer/ar_sendmail.rb +30 -26
- data/test/action_mailer.rb +12 -8
- data/test/active_support.rb +0 -0
- data/test/test_arsendmail.rb +2 -2
- metadata +5 -5
- metadata.gz.sig +0 -0
- data/lib/smtp_tls.rb +0 -105
data.tar.gz.sig
CHANGED
|
Binary file
|
data/History.txt
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
=== 1.4.0
|
|
2
|
+
|
|
3
|
+
* 1.8.7 and 1.9 STARTTLS compatibility, now uses smtp_tls gem for STARTTLS on
|
|
4
|
+
1.8.6
|
|
5
|
+
* Fix 1.9 warnings
|
|
6
|
+
|
|
7
|
+
=== 1.3.3
|
|
2
8
|
|
|
3
9
|
* Work around class_inheritable_accessor being the wrong thing for
|
|
4
10
|
ActionMailer::ARMailer.
|
|
5
11
|
|
|
6
|
-
|
|
12
|
+
=== 1.3.2
|
|
7
13
|
|
|
8
14
|
* Terminate SMTP connection on TimeoutError since Net::SMTP may be in a bogus
|
|
9
15
|
state. Issue by Eric O'Connell.
|
|
@@ -12,14 +18,14 @@
|
|
|
12
18
|
* Upgraded to modern Hoe
|
|
13
19
|
* Updated configuration information for Rails > 2.0
|
|
14
20
|
|
|
15
|
-
|
|
21
|
+
=== 1.3.1
|
|
16
22
|
|
|
17
23
|
* Fix bug #12530, gmail causes SSL errors. Submitted by Kyle Maxwell
|
|
18
24
|
and Alex Ostleitner.
|
|
19
25
|
* Try ActionMailer::Base::server_settings then ::smtp_settings. Fixes
|
|
20
26
|
bug #12516. Submitted by Alex Ostleitner.
|
|
21
27
|
|
|
22
|
-
|
|
28
|
+
=== 1.3.0
|
|
23
29
|
|
|
24
30
|
* New Features
|
|
25
31
|
* Added automatic mail queue cleanup.
|
|
@@ -28,7 +34,7 @@
|
|
|
28
34
|
* Bugs fixed
|
|
29
35
|
* Authentication errors are now handled by retrying once.
|
|
30
36
|
|
|
31
|
-
|
|
37
|
+
=== 1.2.0
|
|
32
38
|
|
|
33
39
|
* Bugs fixed
|
|
34
40
|
* Handle SMTPServerBusy by backing off @delay seconds then re-queueing
|
|
@@ -41,7 +47,7 @@
|
|
|
41
47
|
* Supports TLS now. Requested by Dave Thomas. smtp_tls.rb from Kyle
|
|
42
48
|
Maxwell & etc.
|
|
43
49
|
|
|
44
|
-
|
|
50
|
+
=== 1.1.0
|
|
45
51
|
|
|
46
52
|
* Features
|
|
47
53
|
* Added --chdir to set rails directory
|
|
@@ -56,11 +62,11 @@
|
|
|
56
62
|
* Messages are removed from the queue on 5xx errors
|
|
57
63
|
* Added Net::SMTP.reset to avoid needing to recreate the connection
|
|
58
64
|
|
|
59
|
-
|
|
65
|
+
=== 1.0.1
|
|
60
66
|
|
|
61
67
|
* Bugs fixed
|
|
62
68
|
* From and to of email destination were swapped
|
|
63
69
|
|
|
64
|
-
|
|
70
|
+
=== 1.0.0
|
|
65
71
|
|
|
66
72
|
* Birthday
|
data/Manifest.txt
CHANGED
data/Rakefile
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
require 'hoe'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
ar_mailer.extra_dev_deps << ['minitest', '~> 1.3']
|
|
3
|
+
Hoe.plugin :seattlerb
|
|
4
|
+
|
|
5
|
+
Hoe.spec 'ar_mailer' do
|
|
6
|
+
self.rubyforge_name = 'seattlerb'
|
|
7
|
+
developer 'Eric Hodel', 'drbrain@segment7.net'
|
|
8
|
+
|
|
9
|
+
extra_dev_deps << ['minitest', '~> 1.3']
|
|
11
10
|
end
|
|
12
11
|
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
require 'optparse'
|
|
2
2
|
require 'net/smtp'
|
|
3
|
-
require 'smtp_tls'
|
|
4
3
|
require 'rubygems'
|
|
4
|
+
require 'openssl'
|
|
5
|
+
begin
|
|
6
|
+
require 'smtp_tls'
|
|
7
|
+
rescue LoadError
|
|
8
|
+
# only for 1.8.6 versions
|
|
9
|
+
end
|
|
5
10
|
|
|
6
11
|
class Object # :nodoc:
|
|
7
12
|
unless respond_to? :path2class then
|
|
@@ -14,20 +19,16 @@ end
|
|
|
14
19
|
##
|
|
15
20
|
# Hack in RSET
|
|
16
21
|
|
|
17
|
-
|
|
18
|
-
class SMTP # :nodoc:
|
|
22
|
+
class Net::SMTP
|
|
19
23
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
# Resets the SMTP connection.
|
|
24
|
+
##
|
|
25
|
+
# Resets the SMTP connection.
|
|
23
26
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
end
|
|
27
|
+
def reset
|
|
28
|
+
getok 'RSET'
|
|
27
29
|
end
|
|
28
30
|
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
+
end unless Net::SMTP.method_defined? :reset
|
|
31
32
|
|
|
32
33
|
module ActionMailer; end # :nodoc:
|
|
33
34
|
|
|
@@ -36,9 +37,8 @@ module ActionMailer; end # :nodoc:
|
|
|
36
37
|
# SMTP server configured in your application's config/environment.rb.
|
|
37
38
|
# ar_sendmail does not work with sendmail delivery.
|
|
38
39
|
#
|
|
39
|
-
# ar_mailer can deliver to SMTP with TLS using smtp_tls
|
|
40
|
-
#
|
|
41
|
-
# ActionMailer::Base's smtp_settings to true to enable TLS.
|
|
40
|
+
# ar_mailer can deliver to SMTP with TLS using the smtp_tls gem Set the :tls
|
|
41
|
+
# option in ActionMailer::Base's smtp_settings to true to enable TLS.
|
|
42
42
|
#
|
|
43
43
|
# See ar_sendmail -h for the full list of supported options.
|
|
44
44
|
#
|
|
@@ -54,7 +54,7 @@ class ActionMailer::ARSendmail
|
|
|
54
54
|
##
|
|
55
55
|
# The version of ActionMailer::ARSendmail you are running.
|
|
56
56
|
|
|
57
|
-
VERSION = '1.
|
|
57
|
+
VERSION = '1.4.0'
|
|
58
58
|
|
|
59
59
|
##
|
|
60
60
|
# Maximum number of times authentication will be consecutively retried
|
|
@@ -167,7 +167,8 @@ end
|
|
|
167
167
|
|
|
168
168
|
puts "%10d %8d %s %s" % [email.id, size, created, email.from]
|
|
169
169
|
if email.last_send_attempt > 0 then
|
|
170
|
-
|
|
170
|
+
last_send_attempt = Time.at email.last_send_attempt
|
|
171
|
+
puts "Last send attempt: #{last_send_attempt.asctime}"
|
|
171
172
|
end
|
|
172
173
|
puts " #{email.to}"
|
|
173
174
|
puts
|
|
@@ -191,7 +192,7 @@ end
|
|
|
191
192
|
options[:RailsEnv] = ENV['RAILS_ENV']
|
|
192
193
|
options[:TableName] = 'Email'
|
|
193
194
|
|
|
194
|
-
|
|
195
|
+
op = OptionParser.new do |opts|
|
|
195
196
|
opts.banner = "Usage: #{name} [options]"
|
|
196
197
|
opts.separator ''
|
|
197
198
|
|
|
@@ -277,8 +278,8 @@ end
|
|
|
277
278
|
"Name of table holding emails",
|
|
278
279
|
"Used for both sendmail and",
|
|
279
280
|
"migration creation",
|
|
280
|
-
"Default: #{options[:TableName]}") do |
|
|
281
|
-
options[:TableName] =
|
|
281
|
+
"Default: #{options[:TableName]}") do |table_name|
|
|
282
|
+
options[:TableName] = table_name
|
|
282
283
|
end
|
|
283
284
|
|
|
284
285
|
opts.on("-v", "--[no-]verbose",
|
|
@@ -295,7 +296,7 @@ end
|
|
|
295
296
|
opts.separator ''
|
|
296
297
|
end
|
|
297
298
|
|
|
298
|
-
|
|
299
|
+
op.parse! args
|
|
299
300
|
|
|
300
301
|
return options if options.include? :Migrate or options.include? :Model
|
|
301
302
|
|
|
@@ -305,7 +306,7 @@ end
|
|
|
305
306
|
begin
|
|
306
307
|
require 'config/environment'
|
|
307
308
|
rescue LoadError
|
|
308
|
-
usage
|
|
309
|
+
usage op, <<-EOF
|
|
309
310
|
#{name} must be run from a Rails application's root to deliver email.
|
|
310
311
|
#{Dir.pwd} does not appear to be a Rails application root.
|
|
311
312
|
EOF
|
|
@@ -405,11 +406,14 @@ end
|
|
|
405
406
|
|
|
406
407
|
def deliver(emails)
|
|
407
408
|
user = smtp_settings[:user] || smtp_settings[:user_name]
|
|
408
|
-
Net::SMTP.
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
409
|
+
server = Net::SMTP.new smtp_settings[:address], smtp_settings[:port]
|
|
410
|
+
server.start smtp_settings[:domain], user, smtp_settings[:password],
|
|
411
|
+
smtp_settings[:authentication] do |smtp|
|
|
412
|
+
if smtp_settings[:tls] then
|
|
413
|
+
raise 'gem install smtp_tls for 1.8.6' unless
|
|
414
|
+
server.respond_to? :starttls
|
|
415
|
+
smtp.enable_starttls
|
|
416
|
+
end
|
|
413
417
|
@failed_auth_count = 0
|
|
414
418
|
until emails.empty? do
|
|
415
419
|
email = emails.shift
|
data/test/action_mailer.rb
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
require 'net/smtp'
|
|
2
|
-
|
|
2
|
+
begin
|
|
3
|
+
require 'smtp_tls'
|
|
4
|
+
rescue LoadError
|
|
5
|
+
end
|
|
3
6
|
require 'time'
|
|
4
7
|
|
|
5
8
|
class Net::SMTP
|
|
@@ -17,14 +20,8 @@ class Net::SMTP
|
|
|
17
20
|
attr_reader :deliveries
|
|
18
21
|
attr_reader :send_message_block
|
|
19
22
|
attr_accessor :reset_called
|
|
23
|
+
attr_accessor :start_block
|
|
20
24
|
|
|
21
|
-
send :remove_method, :start
|
|
22
|
-
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def self.start(*args)
|
|
26
|
-
@start_block.call if @start_block
|
|
27
|
-
yield new(nil)
|
|
28
25
|
end
|
|
29
26
|
|
|
30
27
|
def self.on_send_message(&block)
|
|
@@ -42,6 +39,13 @@ class Net::SMTP
|
|
|
42
39
|
@reset_called = 0
|
|
43
40
|
end
|
|
44
41
|
|
|
42
|
+
alias test_old_start start
|
|
43
|
+
|
|
44
|
+
def start(*args)
|
|
45
|
+
self.class.start_block.call if self.class.start_block
|
|
46
|
+
yield self
|
|
47
|
+
end
|
|
48
|
+
|
|
45
49
|
alias test_old_reset reset if instance_methods.include? 'reset'
|
|
46
50
|
|
|
47
51
|
def reset
|
|
File without changes
|
data/test/test_arsendmail.rb
CHANGED
|
@@ -91,7 +91,7 @@ end
|
|
|
91
91
|
recip@h1.example.com
|
|
92
92
|
|
|
93
93
|
3 5 Thu Aug 10 11:19:51 nobody@example.com
|
|
94
|
-
Last send attempt: Thu Aug 10 11:40:05
|
|
94
|
+
Last send attempt: Thu Aug 10 11:40:05 2006
|
|
95
95
|
recip@h2.example.com
|
|
96
96
|
|
|
97
97
|
-- 0 Kbytes in 3 Requests.
|
|
@@ -608,7 +608,7 @@ Last send attempt: Thu Aug 10 11:40:05 -0700 2006
|
|
|
608
608
|
{ :mail => 'body2', :to => 'recip@h2.example.com', :from => nobody },
|
|
609
609
|
]
|
|
610
610
|
|
|
611
|
-
emails = email_data.map do |
|
|
611
|
+
emails = email_data.map do |email| Email.create email end
|
|
612
612
|
|
|
613
613
|
tried = Email.create :mail => 'body3', :to => 'recip@h3.example.com',
|
|
614
614
|
:from => nobody
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ar_mailer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Eric Hodel
|
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
|
30
30
|
x52qPcexcYZR7w==
|
|
31
31
|
-----END CERTIFICATE-----
|
|
32
32
|
|
|
33
|
-
date: 2009-06-
|
|
33
|
+
date: 2009-06-24 00:00:00 -07:00
|
|
34
34
|
default_executable:
|
|
35
35
|
dependencies:
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
@@ -51,7 +51,7 @@ dependencies:
|
|
|
51
51
|
requirements:
|
|
52
52
|
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
54
|
+
version: 2.3.0
|
|
55
55
|
version:
|
|
56
56
|
description: |-
|
|
57
57
|
ar_mailer is a two-phase delivery agent for ActionMailer. Even delivering
|
|
@@ -78,9 +78,9 @@ files:
|
|
|
78
78
|
- bin/ar_sendmail
|
|
79
79
|
- lib/action_mailer/ar_mailer.rb
|
|
80
80
|
- lib/action_mailer/ar_sendmail.rb
|
|
81
|
-
- lib/smtp_tls.rb
|
|
82
81
|
- share/ar_sendmail
|
|
83
82
|
- test/action_mailer.rb
|
|
83
|
+
- test/active_support.rb
|
|
84
84
|
- test/test_armailer.rb
|
|
85
85
|
- test/test_arsendmail.rb
|
|
86
86
|
has_rdoc: true
|
|
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
108
108
|
requirements: []
|
|
109
109
|
|
|
110
110
|
rubyforge_project: seattlerb
|
|
111
|
-
rubygems_version: 1.3.4
|
|
111
|
+
rubygems_version: 1.3.4
|
|
112
112
|
signing_key:
|
|
113
113
|
specification_version: 3
|
|
114
114
|
summary: ar_mailer is a two-phase delivery agent for ActionMailer
|
metadata.gz.sig
CHANGED
|
Binary file
|
data/lib/smtp_tls.rb
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
# Original code believed public domain from ruby-talk or ruby-core email.
|
|
2
|
-
# Modifications by Kyle Maxwell <kyle@kylemaxwell.com> used under MIT license.
|
|
3
|
-
|
|
4
|
-
require "openssl"
|
|
5
|
-
require "net/smtp"
|
|
6
|
-
|
|
7
|
-
# :stopdoc:
|
|
8
|
-
|
|
9
|
-
class Net::SMTP
|
|
10
|
-
|
|
11
|
-
class << self
|
|
12
|
-
send :remove_method, :start
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def self.start( address, port = nil,
|
|
16
|
-
helo = 'localhost.localdomain',
|
|
17
|
-
user = nil, secret = nil, authtype = nil, use_tls = false,
|
|
18
|
-
&block) # :yield: smtp
|
|
19
|
-
new(address, port).start(helo, user, secret, authtype, use_tls, &block)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
alias tls_old_start start
|
|
23
|
-
|
|
24
|
-
def start( helo = 'localhost.localdomain',
|
|
25
|
-
user = nil, secret = nil, authtype = nil, use_tls = false ) # :yield: smtp
|
|
26
|
-
start_method = use_tls ? :do_tls_start : :do_start
|
|
27
|
-
if block_given?
|
|
28
|
-
begin
|
|
29
|
-
send start_method, helo, user, secret, authtype
|
|
30
|
-
return yield(self)
|
|
31
|
-
ensure
|
|
32
|
-
do_finish
|
|
33
|
-
end
|
|
34
|
-
else
|
|
35
|
-
send start_method, helo, user, secret, authtype
|
|
36
|
-
return self
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
private
|
|
41
|
-
|
|
42
|
-
def do_tls_start(helodomain, user, secret, authtype)
|
|
43
|
-
raise IOError, 'SMTP session already started' if @started
|
|
44
|
-
check_auth_args user, secret, authtype if user or secret
|
|
45
|
-
|
|
46
|
-
sock = timeout(@open_timeout) { TCPSocket.open(@address, @port) }
|
|
47
|
-
@socket = Net::InternetMessageIO.new(sock)
|
|
48
|
-
@socket.read_timeout = 60 #@read_timeout
|
|
49
|
-
@socket.debug_output = STDERR #@debug_output
|
|
50
|
-
|
|
51
|
-
check_response(critical { recv_response() })
|
|
52
|
-
do_helo(helodomain)
|
|
53
|
-
|
|
54
|
-
raise 'openssl library not installed' unless defined?(OpenSSL)
|
|
55
|
-
starttls
|
|
56
|
-
ssl = OpenSSL::SSL::SSLSocket.new(sock)
|
|
57
|
-
ssl.sync_close = true
|
|
58
|
-
ssl.connect
|
|
59
|
-
@socket = Net::InternetMessageIO.new(ssl)
|
|
60
|
-
@socket.read_timeout = 60 #@read_timeout
|
|
61
|
-
@socket.debug_output = STDERR #@debug_output
|
|
62
|
-
do_helo(helodomain)
|
|
63
|
-
|
|
64
|
-
authenticate user, secret, authtype if user
|
|
65
|
-
@started = true
|
|
66
|
-
ensure
|
|
67
|
-
unless @started
|
|
68
|
-
# authentication failed, cancel connection.
|
|
69
|
-
@socket.close if not @started and @socket and not @socket.closed?
|
|
70
|
-
@socket = nil
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def do_helo(helodomain)
|
|
75
|
-
begin
|
|
76
|
-
if @esmtp
|
|
77
|
-
ehlo helodomain
|
|
78
|
-
else
|
|
79
|
-
helo helodomain
|
|
80
|
-
end
|
|
81
|
-
rescue Net::ProtocolError
|
|
82
|
-
if @esmtp
|
|
83
|
-
@esmtp = false
|
|
84
|
-
@error_occured = false
|
|
85
|
-
retry
|
|
86
|
-
end
|
|
87
|
-
raise
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def starttls
|
|
92
|
-
getok('STARTTLS')
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
alias tls_old_quit quit
|
|
96
|
-
|
|
97
|
-
def quit
|
|
98
|
-
begin
|
|
99
|
-
getok('QUIT')
|
|
100
|
-
rescue EOFError
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
end unless Net::SMTP.private_method_defined? :do_tls_start or
|
|
105
|
-
Net::SMTP.method_defined? :tls?
|