提交 79b6a4bb 编写于 作者: H hnatt

Use attr_internal in ActionMailer::Base#mail instead of local var for message

上级 04f1ce79
......@@ -797,39 +797,37 @@ def _raise_error
def mail(headers = {}, &block)
return @_message if @_mail_was_called && headers.blank? && !block
m = @_message
# At the beginning, do not consider class default for content_type
content_type = headers[:content_type]
headers = apply_defaults(headers)
# Apply charset at the beginning so all fields are properly quoted
m.charset = charset = headers[:charset]
message.charset = charset = headers[:charset]
# Set configure delivery behavior
wrap_delivery_behavior!(headers.delete(:delivery_method), headers.delete(:delivery_method_options))
# Assign all headers except parts_order, content_type, body, template_name, and template_path
assignable = headers.except(:parts_order, :content_type, :body, :template_name, :template_path)
assignable.each { |k, v| m[k] = v }
assignable.each { |k, v| message[k] = v }
# Render the templates and blocks
responses = collect_responses(headers, &block)
@_mail_was_called = true
create_parts_from_responses(m, responses)
create_parts_from_responses(message, responses)
# Setup content type, reapply charset and handle parts order
m.content_type = set_content_type(m, content_type, headers[:content_type])
m.charset = charset
message.content_type = set_content_type(message, content_type, headers[:content_type])
message.charset = charset
if m.multipart?
m.body.set_sort_order(headers[:parts_order])
m.body.sort_parts!
if message.multipart?
message.body.set_sort_order(headers[:parts_order])
message.body.sort_parts!
end
m
message
end
def apply_defaults(headers)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册