smtp_tls 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.
data.tar.gz.sig ADDED
@@ -0,0 +1 @@
1
+ C���׷��%t4����,�(��I_�x�Ew �����T�%�f˜���4W���DR���� �
data/History.txt ADDED
@@ -0,0 +1,6 @@
1
+ === 1.0 / 2009-06-23
2
+
3
+ * 1 major enhancement
4
+
5
+ * Birthday!
6
+
data/Manifest.txt ADDED
@@ -0,0 +1,5 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ lib/smtp_tls.rb
data/README.txt ADDED
@@ -0,0 +1,46 @@
1
+ = smtp_tls
2
+
3
+ * http://seattlerb.rubyforge.org/smtp_tls
4
+
5
+ == DESCRIPTION:
6
+
7
+ Provides SMTP STARTTLS support for Ruby 1.8.6 (built-in for 1.8.7+). Simply
8
+ require 'smtp_tls' and use the Net::SMTP#enable_starttls method to talk to
9
+ servers that use STARTTLS.
10
+
11
+ require 'smtp_tls'
12
+
13
+ smtp = Net::SMTP.new address, port
14
+ smtp.enable_starttls
15
+ smtp.start Socket.gethostname, user, password, authentication do |server|
16
+ server.send_message message, from, to
17
+ end
18
+
19
+ == INSTALL:
20
+
21
+ sudo gem install smtp_tls
22
+
23
+ == LICENSE:
24
+
25
+ Original code believed public domain from ruby-talk or ruby-core email.
26
+
27
+ Modifications Copyright (c) 2009 Kyle Maxwell <kyle@kylemaxwell.com>
28
+
29
+ Permission is hereby granted, free of charge, to any person obtaining
30
+ a copy of this software and associated documentation files (the
31
+ 'Software'), to deal in the Software without restriction, including
32
+ without limitation the rights to use, copy, modify, merge, publish,
33
+ distribute, sublicense, and/or sell copies of the Software, and to
34
+ permit persons to whom the Software is furnished to do so, subject to
35
+ the following conditions:
36
+
37
+ The above copyright notice and this permission notice shall be
38
+ included in all copies or substantial portions of the Software.
39
+
40
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
41
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
42
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
43
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
44
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
45
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
46
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,16 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+
6
+ Hoe.plugin :seattlerb
7
+
8
+ Hoe.spec 'smtp_tls' do
9
+ developer 'Eric Hodel', 'drbrain@segment7.net'
10
+ developer 'Kyle Maxwell', ''
11
+ self.rubyforge_name = 'seattlerb'
12
+
13
+ spec_extras['required_ruby_version'] = '~> 1.8.6.0'
14
+ end
15
+
16
+ # vim: syntax=Ruby
data/lib/smtp_tls.rb ADDED
@@ -0,0 +1,119 @@
1
+
2
+ require 'openssl'
3
+ require 'net/smtp'
4
+
5
+ # :stopdoc:
6
+
7
+ class Net::SMTP
8
+
9
+ class SMTP_TLS
10
+ VERSION = '1.0'
11
+ end
12
+
13
+ class << self
14
+ send :remove_method, :start
15
+ end
16
+
17
+ def self.default_ssl_context
18
+ OpenSSL::SSL::SSLContext.new
19
+ end
20
+
21
+ def self.start(address, port = nil, helo = 'localhost.localdomain',
22
+ user = nil, secret = nil, authtype = nil, &block) # :yield: smtp
23
+ smtp = new address, port
24
+ smtp.start helo, user, secret, authtype, &block
25
+ end
26
+
27
+ def enable_starttls(context = Net::SMTP.default_ssl_context)
28
+ raise 'openssl library not installed' unless defined?(OpenSSL)
29
+ @starttls = :always
30
+ @ssl_context = context
31
+ end
32
+
33
+ alias tls_old_start start
34
+
35
+ def start(helo = 'localhost.localdomain',
36
+ user = nil, secret = nil, authtype = nil) # :yield: smtp
37
+ start_method = @starttls ? :do_tls_start : :do_start
38
+
39
+ if block_given?
40
+ begin
41
+ send start_method, helo, user, secret, authtype
42
+ return yield(self)
43
+ ensure
44
+ do_finish
45
+ end
46
+ else
47
+ send start_method, helo, user, secret, authtype
48
+ return self
49
+ end
50
+ end
51
+
52
+ def starttls
53
+ getok 'STARTTLS'
54
+ end
55
+
56
+ alias tls_old_quit quit # :nodoc:
57
+
58
+ def quit
59
+ begin
60
+ getok 'QUIT'
61
+ rescue EOFError
62
+ end
63
+ end
64
+
65
+ private
66
+
67
+ def do_tls_start(helodomain, user, secret, authtype)
68
+ raise IOError, 'SMTP session already started' if @started
69
+ check_auth_args user, secret, authtype if user or secret
70
+
71
+ sock = timeout(@open_timeout) { TCPSocket.open @address, @port }
72
+ @socket = Net::InternetMessageIO.new(sock)
73
+ @socket.read_timeout = 60 # @read_timeout
74
+
75
+ check_response(critical { recv_response() })
76
+ do_helo helodomain
77
+
78
+ raise 'openssl library not installed' unless defined?(OpenSSL)
79
+ starttls
80
+ ssl = OpenSSL::SSL::SSLSocket.new sock, @ssl_context
81
+ ssl.sync_close = true
82
+ ssl.connect
83
+ if @ssl_context.verify_mode != OpenSSL::SSL::VERIFY_NONE then
84
+ ssl.post_connection_check(@address)
85
+ end
86
+
87
+ @socket = Net::InternetMessageIO.new ssl
88
+ @socket.read_timeout = 60 # @read_timeout
89
+ do_helo helodomain
90
+
91
+ authenticate user, secret, authtype if user
92
+ @started = true
93
+ ensure
94
+ unless @started then
95
+ # authentication failed, cancel connection.
96
+ @socket.close if not @started and @socket and not @socket.closed?
97
+ @socket = nil
98
+ end
99
+ end
100
+
101
+ def do_helo(helodomain)
102
+ begin
103
+ if @esmtp then
104
+ ehlo helodomain
105
+ else
106
+ helo helodomain
107
+ end
108
+ rescue Net::ProtocolError
109
+ if @esmtp then
110
+ @esmtp = false
111
+ @error_occured = false
112
+ retry
113
+ end
114
+ raise
115
+ end
116
+ end
117
+
118
+ end unless Net::SMTP.method_defined? :starttls
119
+
metadata ADDED
@@ -0,0 +1,106 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: smtp_tls
3
+ version: !ruby/object:Gem::Version
4
+ version: "1.0"
5
+ platform: ruby
6
+ authors:
7
+ - Eric Hodel
8
+ - Kyle Maxwell
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain:
12
+ - |
13
+ -----BEGIN CERTIFICATE-----
14
+ MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMRAwDgYDVQQDDAdkcmJy
15
+ YWluMRgwFgYKCZImiZPyLGQBGRYIc2VnbWVudDcxEzARBgoJkiaJk/IsZAEZFgNu
16
+ ZXQwHhcNMDcxMjIxMDIwNDE0WhcNMDgxMjIwMDIwNDE0WjBBMRAwDgYDVQQDDAdk
17
+ cmJyYWluMRgwFgYKCZImiZPyLGQBGRYIc2VnbWVudDcxEzARBgoJkiaJk/IsZAEZ
18
+ FgNuZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbbgLrGLGIDE76
19
+ LV/cvxdEzCuYuS3oG9PrSZnuDweySUfdp/so0cDq+j8bqy6OzZSw07gdjwFMSd6J
20
+ U5ddZCVywn5nnAQ+Ui7jMW54CYt5/H6f2US6U0hQOjJR6cpfiymgxGdfyTiVcvTm
21
+ Gj/okWrQl0NjYOYBpDi+9PPmaH2RmLJu0dB/NylsDnW5j6yN1BEI8MfJRR+HRKZY
22
+ mUtgzBwF1V4KIZQ8EuL6I/nHVu07i6IkrpAgxpXUfdJQJi0oZAqXurAV3yTxkFwd
23
+ g62YrrW26mDe+pZBzR6bpLE+PmXCzz7UxUq3AE0gPHbiMXie3EFE0oxnsU3lIduh
24
+ sCANiQ8BAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
25
+ BBS5k4Z75VSpdM0AclG2UvzFA/VW5DANBgkqhkiG9w0BAQUFAAOCAQEAHagT4lfX
26
+ kP/hDaiwGct7XPuVGbrOsKRVD59FF5kETBxEc9UQ1clKWngf8JoVuEoKD774dW19
27
+ bU0GOVWO+J6FMmT/Cp7nuFJ79egMf/gy4gfUfQMuvfcr6DvZUPIs9P/TlK59iMYF
28
+ DIOQ3DxdF3rMzztNUCizN4taVscEsjCcgW6WkUJnGdqlu3OHWpQxZBJkBTjPCoc6
29
+ UW6on70SFPmAy/5Cq0OJNGEWBfgD9q7rrs/X8GGwUWqXb85RXnUVi/P8Up75E0ag
30
+ 14jEc90kN+C7oI/AGCBN0j6JnEtYIEJZibjjDJTSMWlUKKkj30kq7hlUC2CepJ4v
31
+ x52qPcexcYZR7w==
32
+ -----END CERTIFICATE-----
33
+
34
+ date: 2009-06-24 00:00:00 -07:00
35
+ default_executable:
36
+ dependencies:
37
+ - !ruby/object:Gem::Dependency
38
+ name: hoe
39
+ type: :development
40
+ version_requirement:
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: 2.3.0
46
+ version:
47
+ description: |-
48
+ Provides SMTP STARTTLS support for Ruby 1.8.6 (built-in for 1.8.7+). Simply
49
+ require 'smtp_tls' and use the Net::SMTP#enable_starttls method to talk to
50
+ servers that use STARTTLS.
51
+
52
+ require 'smtp_tls'
53
+
54
+ smtp = Net::SMTP.new address, port
55
+ smtp.enable_starttls
56
+ smtp.start Socket.gethostname, user, password, authentication do |server|
57
+ server.send_message message, from, to
58
+ end
59
+ email:
60
+ - drbrain@segment7.net
61
+ - ""
62
+ executables: []
63
+
64
+ extensions: []
65
+
66
+ extra_rdoc_files:
67
+ - History.txt
68
+ - Manifest.txt
69
+ - README.txt
70
+ files:
71
+ - History.txt
72
+ - Manifest.txt
73
+ - README.txt
74
+ - Rakefile
75
+ - lib/smtp_tls.rb
76
+ has_rdoc: true
77
+ homepage: http://seattlerb.rubyforge.org/smtp_tls
78
+ licenses: []
79
+
80
+ post_install_message:
81
+ rdoc_options:
82
+ - --main
83
+ - README.txt
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: 1.8.6.0
91
+ version:
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: "0"
97
+ version:
98
+ requirements: []
99
+
100
+ rubyforge_project: seattlerb
101
+ rubygems_version: 1.3.4
102
+ signing_key:
103
+ specification_version: 3
104
+ summary: Provides SMTP STARTTLS support for Ruby 1.8.6 (built-in for 1.8.7+)
105
+ test_files: []
106
+
metadata.gz.sig ADDED
@@ -0,0 +1,3 @@
1
+ MMZ�-�
2
+ Y2�����Z5ӥ�
3
+ t�04ȉ2A_�>