class Object

Public Instance Methods

do_helo(helodomain) click to toggle source
# File lib/mailthis/net_smtp_tls.rb, line 47
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
do_start(helodomain, user, secret, authtype) click to toggle source
# File lib/mailthis/net_smtp_tls.rb, line 11
def do_start(helodomain, user, secret, authtype)
  raise IOError, 'SMTP session already started' if @started

  if RUBY_VERSION > "1.8.6"
    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

  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
    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
quit() click to toggle source
# File lib/mailthis/net_smtp_tls.rb, line 69
def quit
  begin
    getok('QUIT')
  rescue EOFError
  end
end
starttls() click to toggle source
# File lib/mailthis/net_smtp_tls.rb, line 64
def starttls
  getok('STARTTLS') rescue return false
return true
end