Sha256: a1ad85d48481ce32e414ae56c90e6b3c7d009abbd4aec4d69ffd203d1da915c5

Contents?: true

Size: 1.72 KB

Versions: 12

Compression:

Stored size: 1.72 KB

Contents

require "openssl"
require "net/smtp"

Net::SMTP.class_eval do
  private
  def do_start(helodomain, user, secret, authtype)
    raise IOError, 'SMTP session already started' if @started

    # Ruby 1.8.7 changes the param list for check_auth_args
    if method( :check_auth_args ).arity == 2
      check_auth_args user, secret if user or secret
    else
      check_auth_args user, secret, authtype if user or secret
    end

    sock = timeout(@open_timeout) { TCPSocket.open(@address, @port) }
    @socket = Net::InternetMessageIO.new(sock)
    @socket.read_timeout = 60 #@read_timeout
    #@socket.debug_output = STDERR #@debug_output

    check_response(critical { recv_response() })
    do_helo(helodomain)

    if starttls
      raise 'openssl library not installed' unless defined?(OpenSSL)
      ssl = OpenSSL::SSL::SSLSocket.new(sock)
      ssl.sync_close = true
      ssl.connect
      @socket = Net::InternetMessageIO.new(ssl)
      @socket.read_timeout = 60 #@read_timeout
      #@socket.debug_output = STDERR #@debug_output
      do_helo(helodomain)
    end

    authenticate user, secret, authtype if user
    @started = true
  ensure
    unless @started
      # authentication failed, cancel connection.
      @socket.close if not @started and @socket and not @socket.closed?
      @socket = nil
    end
  end

  def do_helo(helodomain)
     begin
      if @esmtp
        ehlo helodomain
      else
        helo helodomain
      end
    rescue Net::ProtocolError
      if @esmtp
        @esmtp = false
        @error_occured = false
        retry
      end
      raise
    end
  end

  def starttls
    getok('STARTTLS') rescue return false
    return true
  end

  def quit
    begin
      getok('QUIT')
    rescue EOFError
    end
  end
end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
cerberus-0.8.0 lib/cerberus/publisher/netsmtp_tls_fix.rb
cerberus-0.7.9 lib/cerberus/publisher/netsmtp_tls_fix.rb
edavis10-cerberus-0.7.8 lib/cerberus/publisher/netsmtp_tls_fix.rb
cerberus-0.7.8 lib/cerberus/publisher/netsmtp_tls_fix.rb
cerberus-0.7.7 lib/cerberus/publisher/netsmtp_tls_fix.rb
cerberus-0.7.6 lib/cerberus/publisher/netsmtp_tls_fix.rb
cerberus-0.7.2 lib/cerberus/publisher/netsmtp_tls_fix.rb
cerberus-0.7.5 lib/cerberus/publisher/netsmtp_tls_fix.rb
cerberus-0.7 lib/cerberus/publisher/netsmtp_tls_fix.rb
cerberus-0.4.5.1 lib/cerberus/publisher/netsmtp_tls_fix.rb
cerberus-0.5 lib/cerberus/publisher/netsmtp_tls_fix.rb
cerberus-0.6 lib/cerberus/publisher/netsmtp_tls_fix.rb