<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,7 @@
 *SVN*
 
+* Backport of documentation enhancements. [Kevin Clark, Marcel Molina Jr]
+
 * Correct spurious documentation example code which results in a SyntaxError. [Marcel Molina Jr.]
 
 * Mailer template root applies to a class and its subclasses rather than acting globally. #5555 [somekool@gmail.com]</diff>
      <filename>actionmailer/CHANGELOG</filename>
    </modified>
    <modified>
      <diff>@@ -5,20 +5,92 @@ require 'action_mailer/utils'
 require 'tmail/net'
 
 module ActionMailer #:nodoc:
-  # Usage:
+  # ActionMailer allows you to send email from your application using a mailer model and views.
   #
-  #   class ApplicationMailer &lt; ActionMailer::Base
-  #     # Set up properties
-  #     # Properties can also be specified via accessor methods
-  #     # (i.e. self.subject = &quot;foo&quot;) and instance variables (@subject = &quot;foo&quot;).
+  # = Mailer Models
+  # To use ActionMailer, you need to create a mailer model.
+  #   
+  #   $ script/generate mailer Notifier
+  #
+  # The generated model inherits from ActionMailer::Base. Emails are defined by creating methods within the model which are then 
+  # used to set variables to be used in the mail template, to change options on the mail, or 
+  # to add attachments.
+  #
+  # Examples:
+  #
+  #  class Notifier &lt; ActionMailer::Base
+  #    def signup_notification(recipient)
+  #      recipients recipient.email_address_with_name
+  #      from       &quot;system@example.com&quot;
+  #      subject    &quot;New account information&quot;
+  #      body       &quot;account&quot; =&gt; recipient
+  #    end
+  #  end
+  #
+  # Mailer methods have the following configuration methods available.
+  #
+  # * &lt;tt&gt;recipients&lt;/tt&gt; - Takes one or more email addresses. These addresses are where your email will be delivered to. Sets the &lt;tt&gt;To:&lt;/tt&gt; header.
+  # * &lt;tt&gt;subject&lt;/tt&gt; - The subject of your email. Sets the &lt;tt&gt;Subject:&lt;/tt&gt; header.
+  # * &lt;tt&gt;from&lt;/tt&gt; - Who the email you are sending is from. Sets the &lt;tt&gt;From:&lt;/tt&gt; header.
+  # * &lt;tt&gt;cc&lt;/tt&gt; - Takes one or more email addresses. These addresses will receive a carbon copy of your email. Sets the &lt;tt&gt;Cc:&lt;/tt&gt; header.
+  # * &lt;tt&gt;bcc&lt;/tt&gt; - Takes one or more email address. These addresses will receive a blind carbon copy of your email. Sets the &lt;tt&gt;Bcc&lt;/tt&gt; header.
+  # * &lt;tt&gt;sent_on&lt;/tt&gt; - The date on which the message was sent. If not set, the header wil be set by the delivery agent.
+  # * &lt;tt&gt;content_type&lt;/tt&gt; - Specify the content type of the message. Defaults to &lt;tt&gt;text/plain&lt;/tt&gt;.
+  # * &lt;tt&gt;headers&lt;/tt&gt; - Specify additional headers to be set for the message, e.g. &lt;tt&gt;headers 'X-Mail-Count' =&gt; 107370&lt;/tt&gt;.
+  #
+  # The &lt;tt&gt;body&lt;/tt&gt; method has special behavior. It takes a hash which generates an instance variable
+  # named after each key in the hash containing the value that that key points to.
+  #
+  # So, for example, &lt;tt&gt;body &quot;account&quot; =&gt; recipient&lt;/tt&gt; would result
+  # in an instance variable &lt;tt&gt;@account&lt;/tt&gt; with the value of &lt;tt&gt;recipient&lt;/tt&gt; being accessible in the 
+  # view.
+  #
+  # = Mailer Views
+  # Like ActionController, each mailer class has a corresponding view directory
+  # in which each method of the class looks for a template with its name.
+  # To define a template to be used with a mailing, create an &lt;tt&gt;.rhtml&lt;/tt&gt; file with the same name as the method
+  # in your mailer model. For example, in the mailer defined above, the template at 
+  # &lt;tt&gt;app/views/notifier/signup_notification.rhtml&lt;/tt&gt; would be used to generate the email.
+  #
+  # Variables defined in the model are accessible as instance variables in the view.
+  #
+  # Emails by default are sent in plain text, so a sample view for our model example might look like this:
+  #
+  #   Hi &lt;%= @account.name %&gt;,
+  #   Thanks for joining our service! Please check back often.
+  #
+  # = Sending Mail
+  # Once a mailer action and template are defined, you can deliver your message or create it and save it 
+  # for delivery later:
+  #
+  #   Notifier.deliver_signup_notification(david) # sends the email
+  #   mail = Notifier.create_signup_notification(david)  # =&gt; a tmail object
+  #   Notifier.deliver(mail)
+  # 
+  # You never instantiate your mailer class. Rather, your delivery instance
+  # methods are automatically wrapped in class methods that start with the word
+  # &lt;tt&gt;deliver_&lt;/tt&gt; followed by the name of the mailer method that you would
+  # like to deliver. The &lt;tt&gt;signup_notification&lt;/tt&gt; method defined above is
+  # delivered by invoking &lt;tt&gt;Notifier.deliver_signup_notification&lt;/tt&gt;.
+  #
+  # = HTML Email
+  # To send mail as HTML, make sure your view (the &lt;tt&gt;.rhtml&lt;/tt&gt; file) generates HTML and
+  # set the content type to html.
+  #
+  #   class MyMailer &lt; ActionMailer::Base
   #     def signup_notification(recipient)
   #       recipients recipient.email_address_with_name
   #       subject    &quot;New account information&quot;
   #       body       &quot;account&quot; =&gt; recipient
   #       from       &quot;system@example.com&quot;
+  #       content_type &quot;text/html&quot;   #    Here's where the magic happens
   #     end
+  #   end  
+  #
+  # = Multipart Email
+  # You can explicitly specify multipart messages:
   #
-  #     # explicitly specify multipart messages
+  #   class ApplicationMailer &lt; ActionMailer::Base
   #     def signup_notification(recipient)
   #       recipients      recipient.email_address_with_name
   #       subject         &quot;New account information&quot;
@@ -32,7 +104,28 @@ module ActionMailer #:nodoc:
   #         p.transfer_encoding = &quot;base64&quot;
   #       end
   #     end
+  #   end
+  #  
+  # Multipart messages can also be used implicitly because ActionMailer will automatically
+  # detect and use multipart templates, where each template is named after the name of the action, followed
+  # by the content type. Each such detected template will be added as separate part to the message.
+  # 
+  # For example, if the following templates existed:
+  # * signup_notification.text.plain.rhtml
+  # * signup_notification.text.html.rhtml
+  # * signup_notification.text.xml.rxml
+  # * signup_notification.text.x-yaml.rhtml
+  #  
+  # Each would be rendered and added as a separate part to the message,
+  # with the corresponding content type. The same body hash is passed to
+  # each template.
   #
+  # = Attachments
+  # Attachments can be added by using the +attachment+ method.
+  #
+  # Example:
+  #
+  #   class ApplicationMailer &lt; ActionMailer::Base
   #     # attachments
   #     def signup_notification(recipient)
   #       recipients      recipient.email_address_with_name
@@ -46,36 +139,7 @@ module ActionMailer #:nodoc:
   #         a.body = generate_your_pdf_here()
   #       end
   #     end
-  #
-  #     # implicitly multipart messages
-  #     def signup_notification(recipient)
-  #       recipients      recipient.email_address_with_name
-  #       subject         &quot;New account information&quot;
-  #       from            &quot;system@example.com&quot;
-  #       body(:account =&gt; &quot;recipient&quot;)
-  #
-  #       # ActionMailer will automatically detect and use multipart templates,
-  #       # where each template is named after the name of the action, followed
-  #       # by the content type. Each such detected template will be added as
-  #       # a separate part to the message.
-  #       #
-  #       # for example, if the following templates existed:
-  #       #   * signup_notification.text.plain.rhtml
-  #       #   * signup_notification.text.html.rhtml
-  #       #   * signup_notification.text.xml.rxml
-  #       #   * signup_notification.text.x-yaml.rhtml
-  #       #
-  #       # Each would be rendered and added as a separate part to the message,
-  #       # with the corresponding content type. The same body hash is passed to
-  #       # each template.
-  #     end
-  #   end
-  #
-  #   # After this, post_notification will look for &quot;templates/application_mailer/post_notification.rhtml&quot;
-  #   ApplicationMailer.template_root = &quot;templates&quot;
-  #  
-  #   ApplicationMailer.create_comment_notification(david, hello_world)  # =&gt; a tmail object
-  #   ApplicationMailer.deliver_comment_notification(david, hello_world) # sends the email
+  #   end 
   #
   # = Configuration options
   #</diff>
      <filename>actionmailer/lib/action_mailer/base.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>94a1758f8202eee65f167337541d102d1faeaad2</id>
    </parent>
  </parents>
  <author>
    <name>Michael Koziarski</name>
    <email>michael@koziarski.com</email>
  </author>
  <url>http://github.com/rubyruy/rails/commit/4874df1d674bccbe2fa41a12bb93fa63a5d489ee</url>
  <id>4874df1d674bccbe2fa41a12bb93fa63a5d489ee</id>
  <committed-date>2006-08-08T16:37:59-07:00</committed-date>
  <authored-date>2006-08-08T16:37:59-07:00</authored-date>
  <message>backport of ActionMailer documentation enhancements from trunk

git-svn-id: http://svn-commit.rubyonrails.org/rails/branches/stable@4732 5ecf4fe2-1ee6-0310-87b1-e25e094e27de</message>
  <tree>5fcb781d109af8ea509a7da2f3e0ef31cd38a888</tree>
  <committer>
    <name>Michael Koziarski</name>
    <email>michael@koziarski.com</email>
  </committer>
</commit>
