Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Added access to custom headers, like cc, bcc, and reply-to #268 [Andr…
…eas Schwarz]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@54 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information
dhh committed Dec 7, 2004
1 parent 35c89c4 commit 165097e
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 10 deletions.
13 changes: 13 additions & 0 deletions actionmailer/CHANGELOG
@@ -1,3 +1,16 @@
*SVN*

* Added access to custom headers, like cc, bcc, and reply-to #268 [Andreas Schwarz]. Example:

def post_notification(recipients, post)
@recipients = recipients
@from = post.author.email_address_with_name
@headers["bcc"] = SYSTEM_ADMINISTRATOR_EMAIL
@headers["reply-to"] = "notifications@example.com"
@subject = "[#{post.account.name} #{post.title}]"
@body["post"] = post
end

*0.4* (5)

* Consolidated the server configuration options into Base#server_settings= and expanded that with controls for authentication and more [Marten]
Expand Down
30 changes: 20 additions & 10 deletions actionmailer/lib/action_mailer/base.rb
Expand Up @@ -3,10 +3,12 @@ module ActionMailer #:nodoc:
#
# class ApplicationMailer < ActionMailer::Base
# def post_notification(recipients, post)
# @recipients = recipients
# @subject = "[#{post.account.name} #{post.title}]"
# @body["post"] = post
# @from = post.author.email_address_with_name
# @recipients = recipients
# @from = post.author.email_address_with_name
# @headers["bcc"] = SYSTEM_ADMINISTRATOR_EMAIL
# @headers["reply-to"] = "notifications@example.com"
# @subject = "[#{post.account.name} #{post.title}]"
# @body["post"] = post
# end
#
# def comment_notification(recipient, comment)
Expand Down Expand Up @@ -72,7 +74,11 @@ class Base
@@deliveries = []
cattr_accessor :deliveries

attr_accessor :recipients, :subject, :body, :from, :sent_on, :bcc, :cc
attr_accessor :recipients, :subject, :body, :from, :sent_on, :headers, :bcc, :cc

def initialize
@headers = {}
end

class << self
def method_missing(method_symbol, *parameters)#:nodoc:
Expand All @@ -88,14 +94,18 @@ def method_missing(method_symbol, *parameters)#:nodoc:
end
end

def mail(to, subject, body, from, timestamp = nil) #:nodoc:
deliver(create(to, subject, body, from, timestamp))
def mail(to, subject, body, from, timestamp = nil, headers = nil) #:nodoc:
deliver(create(to, subject, body, from, timestamp, headers))
end

def create(to, subject, body, from, timestamp = nil) #:nodoc:
def create(to, subject, body, from, timestamp = nil, headers = nil) #:nodoc:
m = TMail::Mail.new
m.to, m.subject, m.body, m.from = to, subject, body, from
m.date = timestamp.respond_to?("to_time") ? timestamp.to_time : (timestamp || Time.now)
headers.each do |k, v|
m[k] = v
end

return m
end

Expand Down Expand Up @@ -129,9 +139,9 @@ def create_from_action(method_name, *parameters)
mailer.send(method_name, *parameters)

if String === mailer.body
mail = create(mailer.recipients, mailer.subject, mailer.body, mailer.from, mailer.sent_on)
mail = create(mailer.recipients, mailer.subject, mailer.body, mailer.from, mailer.sent_on, mailer.headers)
else
mail = create(mailer.recipients, mailer.subject, render_body(mailer, method_name), mailer.from, mailer.sent_on)
mail = create(mailer.recipients, mailer.subject, render_body(mailer, method_name), mailer.from, mailer.sent_on, mailer.headers)
end

mail.bcc = @bcc if @bcc
Expand Down

0 comments on commit 165097e

Please sign in to comment.