# class Mail::SMTPConnection

## Sending Email with SMTP¶ ↑

Mail allows you to send emails using an open SMTP connection. This is done by passing a created Net::SMTP object. This way we can get better performance to our local mail server by reducing the number of connections at any one time.

### Sending via SMTP server on Localhost¶ ↑

To send mail open a connection with Net::Smtp using any options you like

### Delivering the email¶ ↑

Once you have the settings right, sending the email is done by:

    smtp_conn = Net::SMTP.start(settings[:address], settings[:port])
    Mail.defaults do
      delivery_method :smtp_connection, { :connection => smtp_conn }
    end

    Mail.deliver do
      to 'mikel@test.lindsaar.net'
      from 'ada@test.lindsaar.net'
      subject 'testing sendmail'
      body 'testing sendmail'
    end

Or by calling deliver on a Mail message

    mail = Mail.new do
      to 'mikel@test.lindsaar.net'
      from 'ada@test.lindsaar.net'
      subject 'testing sendmail'
      body 'testing sendmail'
    end

    mail.deliver!

### Attributes

settings[RW]
smtp[RW]

### Public Class Methods

new(values) click to toggle source

    # File lib/mail/network/delivery_methods/smtp_connection.rb, line 42
    def initialize(values)
      raise ArgumentError.new('A Net::SMTP object is required for this delivery method') if values[:connection].nil?
      self.smtp = values[:connection]
      self.settings = values
    end

### Public Instance Methods

deliver!(mail) click to toggle source

Send the message via SMTP. The from and to attributes are optional. If not set, they are retrieve from the Message.

    # File lib/mail/network/delivery_methods/smtp_connection.rb, line 50
    def deliver!(mail)
      smtp_from, smtp_to, message = Mail::CheckDeliveryParams.check(mail)
      response = smtp.sendmail(message, smtp_from, smtp_to)

      settings[:return_response] ? response : self
    end