mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Removing internal delivery agents
This commit is contained in:
committed by
José Valim
parent
5a52523a80
commit
5b0c8a1266
@@ -1,56 +0,0 @@
|
||||
require 'active_support/core_ext/class'
|
||||
|
||||
module ActionMailer
|
||||
module DeliveryMethod
|
||||
autoload :File, 'action_mailer/delivery_method/file'
|
||||
autoload :Sendmail, 'action_mailer/delivery_method/sendmail'
|
||||
autoload :Smtp, 'action_mailer/delivery_method/smtp'
|
||||
autoload :Test, 'action_mailer/delivery_method/test'
|
||||
|
||||
# Creates a new DeliveryMethod object according to the given options.
|
||||
#
|
||||
# If no arguments are passed to this method, then a new
|
||||
# ActionMailer::DeliveryMethod::Stmp object will be returned.
|
||||
#
|
||||
# If you pass a Symbol as the first argument, then a corresponding
|
||||
# delivery method class under the ActionMailer::DeliveryMethod namespace
|
||||
# will be created.
|
||||
# For example:
|
||||
#
|
||||
# ActionMailer::DeliveryMethod.lookup_method(:sendmail)
|
||||
# # => returns a new ActionMailer::DeliveryMethod::Sendmail object
|
||||
#
|
||||
# If the first argument is not a Symbol, then it will simply be returned:
|
||||
#
|
||||
# ActionMailer::DeliveryMethod.lookup_method(MyOwnDeliveryMethod.new)
|
||||
# # => returns MyOwnDeliveryMethod.new
|
||||
def self.lookup_method(delivery_method)
|
||||
case delivery_method
|
||||
when Symbol
|
||||
method_name = delivery_method.to_s.camelize
|
||||
method_class = ActionMailer::DeliveryMethod.const_get(method_name)
|
||||
method_class.new
|
||||
when nil # default
|
||||
Smtp.new
|
||||
else
|
||||
delivery_method
|
||||
end
|
||||
end
|
||||
|
||||
# An abstract delivery method class. There are multiple delivery method classes.
|
||||
# See the classes under the ActionMailer::DeliveryMethod, e.g.
|
||||
# ActionMailer::DeliveryMethod::Smtp.
|
||||
# Smtp is the default delivery method for production
|
||||
# while Test is used in testing.
|
||||
#
|
||||
# each delivery method exposes just one method
|
||||
#
|
||||
# delivery_method = ActionMailer::DeliveryMethod::Smtp.new
|
||||
# delivery_method.perform_delivery(mail) # send the mail via smtp
|
||||
#
|
||||
class Method
|
||||
superclass_delegating_accessor :settings
|
||||
self.settings = {}
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,21 +0,0 @@
|
||||
require 'tmpdir'
|
||||
|
||||
module ActionMailer
|
||||
module DeliveryMethod
|
||||
|
||||
# A delivery method implementation which writes all mails to a file.
|
||||
class File < Method
|
||||
self.settings = {
|
||||
:location => defined?(Rails.root) ? "#{Rails.root}/tmp/mails" : "#{Dir.tmpdir}/mails"
|
||||
}
|
||||
|
||||
def perform_delivery(mail)
|
||||
FileUtils.mkdir_p settings[:location]
|
||||
|
||||
mail.destinations.uniq.each do |to|
|
||||
::File.open(::File.join(settings[:location], to), 'a') { |f| f.write(mail) }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,22 +0,0 @@
|
||||
module ActionMailer
|
||||
module DeliveryMethod
|
||||
|
||||
# A delivery method implementation which sends via sendmail.
|
||||
class Sendmail < Method
|
||||
self.settings = {
|
||||
:location => '/usr/sbin/sendmail',
|
||||
:arguments => '-i -t'
|
||||
}
|
||||
|
||||
def perform_delivery(mail)
|
||||
sendmail_args = settings[:arguments]
|
||||
sendmail_args += " -f \"#{mail['return-path']}\"" if mail['return-path']
|
||||
IO.popen("#{settings[:location]} #{sendmail_args}","w+") do |sm|
|
||||
sm.print(mail.encoded.gsub(/\r/, ''))
|
||||
sm.flush
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
@@ -1,30 +0,0 @@
|
||||
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
|
||||
@@ -1,12 +0,0 @@
|
||||
module ActionMailer
|
||||
module DeliveryMethod
|
||||
|
||||
# A delivery method implementation designed for testing, which just appends each record to the :deliveries array
|
||||
class Test < Method
|
||||
def perform_delivery(mail)
|
||||
ActionMailer::Base.deliveries << mail
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user