aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/lib/action_mailer/delivery_method/smtp.rb
blob: af30c498b5173b0f9315704ca88b184dffd998e7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
require 'net/smtp'

module ActionMailer
  module DeliveryMethod
    # A delivery method implementation which sends via smtp.
    class Smtp < Method
      self.settings = {
        :address              => "localhost",
        :port                 => 25,
        :domain               => 'localhost.localdomain',
        :user_name            => nil,
        :password             => nil,
        :authentication       => nil,
        :enable_starttls_auto => true,
      }

      def perform_delivery(mail)
        destinations = mail.destinations
        sender = (mail['return-path'] && mail['return-path'].address) || mail['from']

        smtp = Net::SMTP.new(settings[:address], settings[:port])
        smtp.enable_starttls_auto if settings[:enable_starttls_auto] && smtp.respond_to?(:enable_starttls_auto)
        smtp.start(settings[:domain], settings[:user_name], settings[:password],
                   settings[:authentication]) do |smtp|
          smtp.sendmail(mail.encoded, sender, destinations)
        end
      end
    end
  end
end