Method: Net::SMTP#start

Defined in:
lib/net/smtp.rb

#start(helo = 'localhost.localdomain', user = nil, secret = nil, authtype = nil) ⇒ Object

Opens a TCP connection and starts the SMTP session.

Parameters

helo is the HELO domain that you’ll dispatch mails from; see the discussion in the overview notes.

If both of user and secret are given, SMTP authentication will be attempted using the AUTH command. authtype specifies the type of authentication to attempt; it must be one of :login, :plain, and :cram_md5. See the notes on SMTP Authentication in the overview.

Block Usage

When this methods is called with a block, the newly-started SMTP object is yielded to the block, and automatically closed after the block call finishes. Otherwise, it is the caller’s responsibility to close the session when finished.

Example

This is very similar to the class method SMTP.start.

require 'net/smtp' 
smtp = Net::SMTP.new('smtp.mail.server', 25)
smtp.start(helo_domain, , password, authtype) do |smtp|
  smtp.send_message msgstr, '[email protected]', ['[email protected]']
end

The primary use of this method (as opposed to SMTP.start) is probably to set debugging (#set_debug_output) or ESMTP (#esmtp=), which must be done before the session is started.

Errors

If session has already been started, an IOError will be raised.

This method may raise:

  • Net::SMTPAuthenticationError

  • Net::SMTPServerBusy

  • Net::SMTPSyntaxError

  • Net::SMTPFatalError

  • Net::SMTPUnknownError

  • IOError

  • TimeoutError



374
375
376
377
378
379
380
381
382
383
384
385
386
387
# File 'lib/net/smtp.rb', line 374

def start( helo = 'localhost.localdomain',
           user = nil, secret = nil, authtype = nil ) # :yield: smtp
  if block_given?
    begin
      do_start(helo, user, secret, authtype)
      return yield(self)
    ensure
      do_finish
    end
  else
    do_start(helo, user, secret, authtype)
    return self
  end
end