Class: ActionMailer::Base
- Inherits:
-
Object
- Object
- ActionMailer::Base
- Defined in:
- lib/action_mailer/base.rb
Overview
Usage:
class ApplicationMailer < ActionMailer::Base
def post_notification(recipients, post)
@recipients = recipients
@from = post..email_address_with_name
@headers["bcc"] = SYSTEM_ADMINISTRATOR_EMAIL
@headers["reply-to"] = "[email protected]"
@subject = "[#{post.account.name} #{post.title}]"
@body["post"] = post
end
def comment_notification(recipient, comment)
@recipients = recipient.email_address_with_name
@subject = "[#{comment.post.project.client.firm.account.name}]" +
" Re: #{comment.post.title}"
@body["comment"] = comment
@from = comment..email_address_with_name
@sent_on = comment.posted_on
end
end
# After this post_notification will look for "templates/application_mailer/post_notification.rhtml"
ApplicationMailer.template_root = "templates"
ApplicationMailer.create_comment_notification(david, hello_world) # => a tmail object
ApplicationMailer.deliver_comment_notification(david, hello_world) # sends the email
Configuration options
These options are specified on the class level, like ActionMailer::Base.template_root = "/my/templates"
-
template_root
- template root determines the base from which template references will be made. -
logger
- the logger is used for generating information on the mailing run if available. Can be set to nil for no logging. Compatible with both Ruby’s own Logger and Log4r loggers. -
server_settings
- Allows detailed configuration of the server:-
:address
Allows you to use a remote mail server. Just change it away from it’s default “localhost” setting. -
:port
On the off change that your mail server doesn’t run on port 25, you can change it. -
:domain
If you need to specify a HELO domain, you can do it here. -
:user_name
If your mail server requires authentication, set the username and password in these two settings. -
:password
If your mail server requires authentication, set the username and password in these two settings. -
:authentication
If your mail server requires authentication, you need to specify the authentication type here. This is a symbol and one of :plain, :login, :cram_md5
-
-
raise_delivery_errors
- whether or not errors should be raised if the email fails to be delivered. -
delivery_method
- Defines a delivery method. Possible values are :smtp (default), :sendmail, and :test. Sendmail is assumed to be present at “/usr/sbin/sendmail”. -
perform_deliveries
- Determines whether deliver_* methods are actually carried out. By default they are, but this can be turned off to help functional testing. -
deliveries
- Keeps an array of all the emails sent out through the Action Mailer with delivery_method :test. Most useful for unit and functional testing.
Constant Summary collapse
- @@server_settings =
{ :address => "localhost", :port => 25, :domain => 'localhost.localdomain', :user_name => nil, :password => nil, :authentication => nil }
- @@raise_delivery_errors =
true
- @@delivery_method =
:smtp
- @@perform_deliveries =
true
- @@deliveries =
[]
Instance Attribute Summary collapse
-
#bcc ⇒ Object
Returns the value of attribute bcc.
-
#body ⇒ Object
Returns the value of attribute body.
-
#cc ⇒ Object
Returns the value of attribute cc.
-
#from ⇒ Object
Returns the value of attribute from.
-
#headers ⇒ Object
Returns the value of attribute headers.
-
#recipients ⇒ Object
Returns the value of attribute recipients.
-
#sent_on ⇒ Object
Returns the value of attribute sent_on.
-
#subject ⇒ Object
Returns the value of attribute subject.
Class Method Summary collapse
-
.create(to, subject, body, from, timestamp = nil, headers = nil) ⇒ Object
:nodoc:.
-
.deliver(mail) ⇒ Object
:nodoc:.
-
.mail(to, subject, body, from, timestamp = nil, headers = nil) ⇒ Object
:nodoc:.
-
.method_missing(method_symbol, *parameters) ⇒ Object
:nodoc:.
Instance Method Summary collapse
-
#initialize ⇒ Base
constructor
A new instance of Base.
Constructor Details
#initialize ⇒ Base
Returns a new instance of Base.
88 89 90 91 |
# File 'lib/action_mailer/base.rb', line 88 def initialize @bcc = @cc = @from = @recipients = @sent_on = @subject = @body = nil @headers = {} end |
Instance Attribute Details
#bcc ⇒ Object
Returns the value of attribute bcc.
86 87 88 |
# File 'lib/action_mailer/base.rb', line 86 def bcc @bcc end |
#body ⇒ Object
Returns the value of attribute body.
86 87 88 |
# File 'lib/action_mailer/base.rb', line 86 def body @body end |
#cc ⇒ Object
Returns the value of attribute cc.
86 87 88 |
# File 'lib/action_mailer/base.rb', line 86 def cc @cc end |
#from ⇒ Object
Returns the value of attribute from.
86 87 88 |
# File 'lib/action_mailer/base.rb', line 86 def from @from end |
#headers ⇒ Object
Returns the value of attribute headers.
86 87 88 |
# File 'lib/action_mailer/base.rb', line 86 def headers @headers end |
#recipients ⇒ Object
Returns the value of attribute recipients.
86 87 88 |
# File 'lib/action_mailer/base.rb', line 86 def recipients @recipients end |
#sent_on ⇒ Object
Returns the value of attribute sent_on.
86 87 88 |
# File 'lib/action_mailer/base.rb', line 86 def sent_on @sent_on end |
#subject ⇒ Object
Returns the value of attribute subject.
86 87 88 |
# File 'lib/action_mailer/base.rb', line 86 def subject @subject end |
Class Method Details
.create(to, subject, body, from, timestamp = nil, headers = nil) ⇒ Object
:nodoc:
111 112 113 114 115 116 117 118 119 120 |
# File 'lib/action_mailer/base.rb', line 111 def create(to, subject, body, from, = nil, headers = nil) #:nodoc: m = TMail::Mail.new m.to, m.subject, m.body, m.from = to, subject, body, from m.date = .respond_to?("to_time") ? .to_time : ( || Time.now) headers.each do |k, v| m[k] = v end return m end |
.deliver(mail) ⇒ Object
:nodoc:
122 123 124 125 |
# File 'lib/action_mailer/base.rb', line 122 def deliver(mail) #:nodoc: logger.info "Sent mail:\n #{mail.encoded}" unless logger.nil? send("perform_delivery_#{delivery_method}", mail) if perform_deliveries end |
.mail(to, subject, body, from, timestamp = nil, headers = nil) ⇒ Object
:nodoc:
107 108 109 |
# File 'lib/action_mailer/base.rb', line 107 def mail(to, subject, body, from, = nil, headers = nil) #:nodoc: deliver(create(to, subject, body, from, , headers)) end |
.method_missing(method_symbol, *parameters) ⇒ Object
:nodoc:
94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/action_mailer/base.rb', line 94 def method_missing(method_symbol, *parameters)#:nodoc: case method_symbol.id2name when /^create_([_a-z]*)/ create_from_action($1, *parameters) when /^deliver_([_a-z]*)/ begin deliver(send("create_" + $1, *parameters)) rescue Object => e raise e if raise_delivery_errors end end end |