aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/lib/action_mailer/delivery_method/smtp.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionmailer/lib/action_mailer/delivery_method/smtp.rb')
-rw-r--r--actionmailer/lib/action_mailer/delivery_method/smtp.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/actionmailer/lib/action_mailer/delivery_method/smtp.rb b/actionmailer/lib/action_mailer/delivery_method/smtp.rb
new file mode 100644
index 0000000000..e39f97330c
--- /dev/null
+++ b/actionmailer/lib/action_mailer/delivery_method/smtp.rb
@@ -0,0 +1,31 @@
+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
+ mail.ready_to_send
+ sender = (mail['return-path'] && mail['return-path'].spec) || 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