aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/lib/action_mailer/delivery_method/file.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionmailer/lib/action_mailer/delivery_method/file.rb')
-rw-r--r--actionmailer/lib/action_mailer/delivery_method/file.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/actionmailer/lib/action_mailer/delivery_method/file.rb b/actionmailer/lib/action_mailer/delivery_method/file.rb
new file mode 100644
index 0000000000..587ae37ffa
--- /dev/null
+++ b/actionmailer/lib/action_mailer/delivery_method/file.rb
@@ -0,0 +1,21 @@
+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) ? "#{Rails.root}/tmp/mails" : "#{Dir.tmpdir}/mails"
+ }
+
+ def perform_delivery(mail)
+ FileUtils.mkdir_p settings[:location]
+
+ (mail.to + mail.cc + mail.bcc).uniq.each do |to|
+ ::File.open(::File.join(settings[:location], to), 'a') { |f| f.write(mail) }
+ end
+ end
+ end
+ end
+end