mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #27227 from MQuy/allow-custom-content-type-in-mail-body
Allow to custom content type when setting mailer body
This commit is contained in:
commit
e482dce0ed
3 changed files with 38 additions and 4 deletions
|
@ -1,3 +1,15 @@
|
|||
* Mime type: allow to custom content type when setting body in headers
|
||||
and attachments.
|
||||
|
||||
Example:
|
||||
|
||||
def test_emails
|
||||
attachments["invoice.pdf"] = "This is test File content"
|
||||
mail(body: "Hello there", content_type: "text/html")
|
||||
end
|
||||
|
||||
*Minh Quy*
|
||||
|
||||
* Exception handling: use `rescue_from` to handle exceptions raised by
|
||||
mailer actions, by message delivery, and by deferred delivery jobs.
|
||||
|
||||
|
|
|
@ -208,6 +208,19 @@ module ActionMailer
|
|||
# end
|
||||
# end
|
||||
#
|
||||
# You can also send attachments with html template, in this case you need to add body, attachments,
|
||||
# and custom content type like this:
|
||||
#
|
||||
# class NotifierMailer < ApplicationMailer
|
||||
# def welcome(recipient)
|
||||
# attachments["free_book.pdf"] = File.read("path/to/file.pdf")
|
||||
# mail(to: recipient,
|
||||
# subject: "New account information",
|
||||
# content_type: "text/html",
|
||||
# body: "<html><body>Hello there</body></html>")
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# = Inline Attachments
|
||||
#
|
||||
# You can also specify that a file should be displayed inline with other HTML. This is useful
|
||||
|
@ -896,15 +909,19 @@ module ActionMailer
|
|||
yield(collector)
|
||||
collector.responses
|
||||
elsif headers[:body]
|
||||
[{
|
||||
body: headers.delete(:body),
|
||||
content_type: self.class.default[:content_type] || "text/plain"
|
||||
}]
|
||||
collect_responses_from_text(headers)
|
||||
else
|
||||
collect_responses_from_templates(headers)
|
||||
end
|
||||
end
|
||||
|
||||
def collect_responses_from_text(headers)
|
||||
[{
|
||||
body: headers.delete(:body),
|
||||
content_type: headers[:content_type] || "text/plain"
|
||||
}]
|
||||
end
|
||||
|
||||
def collect_responses_from_templates(headers)
|
||||
templates_path = headers[:template_path] || self.class.mailer_name
|
||||
templates_name = headers[:template_name] || action_name
|
||||
|
|
|
@ -140,6 +140,11 @@ class BaseTest < ActiveSupport::TestCase
|
|||
assert_equal("multipart/mixed", email.mime_type)
|
||||
end
|
||||
|
||||
test "set mime type to text/html when attachment is included and body is set" do
|
||||
email = BaseMailer.attachment_with_content(body: "Hello there", content_type: "text/html")
|
||||
assert_equal("text/html", email.mime_type)
|
||||
end
|
||||
|
||||
test "adds the rendered template as part" do
|
||||
email = BaseMailer.attachment_with_content
|
||||
assert_equal(2, email.parts.length)
|
||||
|
|
Loading…
Reference in a new issue