mattmatt-cijoe 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  class CIJoe
2
- Version = "0.1.3"
2
+ Version = "0.1.4"
3
3
  end
@@ -2,7 +2,7 @@
2
2
  # http://github.com/lsegal/mmmail/
3
3
 
4
4
  require 'net/smtp'
5
- require File.expand_path(File.dirname(__FILE__) + '/lib/smtp_tls')
5
+ require File.expand_path(File.dirname(__FILE__) + '/smtp_tls')
6
6
 
7
7
  module MmMail
8
8
  # General exception class when something goes wrong in MmMail
@@ -0,0 +1,113 @@
1
+ # Include hook code here
2
+
3
+ require 'net/smtp'
4
+ require 'timeout'
5
+
6
+ begin
7
+ require 'openssl'
8
+ rescue LoadError
9
+ end
10
+
11
+ Net::SMTP.class_eval do
12
+
13
+ alias_method :old_initialize, :initialize
14
+ def initialize(*args)
15
+ @usetls = @@usetls
16
+ old_initialize *args
17
+ end
18
+
19
+ @@usetls = false
20
+
21
+ def self.enable_tls()
22
+ @@usetls = true
23
+ end
24
+
25
+ def self.disable_tls()
26
+ @@usetls = false
27
+ end
28
+
29
+ def self.use_tls?()
30
+ @@usetls
31
+ end
32
+
33
+ def use_tls?()
34
+ @usetls
35
+ end
36
+
37
+ def enable_tls()
38
+ print "tls enabled\n"
39
+ @usetls = true
40
+ end
41
+
42
+ def disable_tls()
43
+ @usetls = false
44
+ end
45
+
46
+ def use_tls?()
47
+ @usetls
48
+ end
49
+
50
+ private
51
+ def do_start(helodomain, user, secret, authtype)
52
+ raise IOError 'SMTP session already started' if @started
53
+ if user or secret
54
+ check_auth_method(authtype || DEFAULT_AUTH_TYPE)
55
+ check_auth_args user, secret
56
+ end
57
+
58
+ sock = timeout(@open_timeout) {TCPSocket.open(@address, @port) }
59
+ @socket = Net::InternetMessageIO.new(sock)
60
+ @socket.read_timeout = @read_timeout
61
+ @socket.debug_output = STDERR
62
+
63
+ check_response(critical {recv_response() } )
64
+ do_helo(helodomain)
65
+
66
+ if @usetls
67
+ raise 'openssl is not installed' unless defined?(OpenSSL)
68
+ ssl = OpenSSL::SSL::SSLSocket.new(sock)
69
+ starttls
70
+ ssl.sync_close = true
71
+ ssl.connect
72
+
73
+ @socket = Net::InternetMessageIO.new(ssl)
74
+ @socket.read_timeout = @read_timeout
75
+ @socket.debug_output = STDERR
76
+ do_helo(helodomain)
77
+ end
78
+
79
+ authenticate user, secret, authtype if user
80
+ @started = true
81
+ ensure
82
+ @socket.close if not @started and @socket and not @socket.closed?
83
+ end
84
+
85
+ def do_helo(helodomain)
86
+ begin
87
+ if @esmtp
88
+ ehlo helodomain
89
+ else
90
+ helo helodomain
91
+ end
92
+ rescue Net::ProtocolError
93
+ if @esmtp
94
+ @esmtp = false
95
+ @error_occured = false
96
+ retry
97
+ end
98
+ raise
99
+ end
100
+ end
101
+
102
+ def starttls
103
+ getok('STARTTLS')
104
+ end
105
+
106
+ def quit
107
+ begin
108
+ getok('QUIT')
109
+ rescue EOFError
110
+ # gmail sucks
111
+ end
112
+ end
113
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mattmatt-cijoe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Wanstrath
@@ -72,6 +72,7 @@ files:
72
72
  - lib/cijoe/version.rb
73
73
  - lib/cijoe/views/template.erb
74
74
  - lib/mmmail.rb
75
+ - lib/smtp_tls.rb
75
76
  - spec/email_spec.rb
76
77
  has_rdoc: true
77
78
  homepage: http://github.com/defunkt/cijoe