Permalink
Browse files

Merge commit 'mikel/master' into mail

Conflicts:
	actionmailer/lib/action_mailer.rb
  • Loading branch information...
2 parents ca5de16 + 3a72923 commit 671538cd6ea0bd4c463e7bf7d238a55924a8af53 @jeremy jeremy committed Nov 23, 2009
View
14 actionmailer/CHANGELOG
@@ -1,13 +1,16 @@
*Mail Integration
-* Mail does not have "quoted_body", "quoted_subject" etc. All of these are accessed via body.encoded, subject.encoded etc
+* Mail does not have "quoted_body", "quoted_subject" etc. All of these are accessed via body.encoded,
+ subject.encoded etc
-* Every part of a Mail object returns an object, never a string. So Mail.body returns a Mail::Body class object, need to call #encoded or #decoded to get the string you want
+* Every part of a Mail object returns an object, never a string. So Mail.body returns a Mail::Body
+ class object, need to call #encoded or #decoded to get the string you want
* Mail::Message#set_content_type does not exist, it is simply Mail::Message#content_type
-* Every mail message gets a unique message_id unless you specify one, had to change all the tests that check for
- equality with expected.encoded == actual.encoded to first replace their message_ids with control values
+* Every mail message gets a unique message_id unless you specify one, had to change all the tests that
+ check for equality with expected.encoded == actual.encoded to first replace their message_ids with
+ control values
* Mail now has a proper concept of parts, remove the ActionMailer::Part and ActionMailer::PartContainer classes
@@ -20,9 +23,6 @@
* There is no idea of a "sub_head" in Mail. A part is just a Message with some extra functionality, so it
just has a "header" like a normal mail message
-
-* When you want to add a nested part, you now need to use "add_part(params)" instead of "part(params)" This
- creates a Mail gem Part object
*2.3.2 [Final] (March 15, 2009)*
View
2 actionmailer/actionmailer.gemspec
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
s.homepage = "http://www.rubyonrails.org"
s.add_dependency('actionpack', '= 3.0.pre')
- s.add_dependency('mail', '~> 1.2.8')
+ s.add_dependency('mail', '~> 1.3.0')
s.files = Dir['CHANGELOG', 'README', 'MIT-LICENSE', 'lib/**/*']
s.has_rdoc = true
View
1 actionmailer/lib/action_mailer.rb
@@ -40,7 +40,6 @@ def self.load_all!
autoload :Quoting, 'action_mailer/quoting'
autoload :TestCase, 'action_mailer/test_case'
autoload :TestHelper, 'action_mailer/test_helper'
- autoload :Utils, 'action_mailer/utils'
end
View
17 actionmailer/lib/action_mailer/base.rb
@@ -251,7 +251,7 @@ module ActionMailer #:nodoc:
# and appear last in the mime encoded message. You can also pick a different order from inside a method with
# +implicit_parts_order+.
class Base
- include AdvAttrAccessor, Quoting, Utils
+ include AdvAttrAccessor, Quoting
include AbstractController::RenderingController
include AbstractController::LocalizedCache
@@ -372,8 +372,9 @@ def mailer_name(value = nil)
def part(params)
params = {:content_type => params} if String === params
if custom_headers = params.delete(:headers)
- STDERR.puts("Passing custom headers with :headers => {} is deprecated. Please just pass in custom headers directly.")
- params = params.merge(custom_headers)
+ ActiveSupport::Deprecation.warn('Passing custom headers with :headers => {} is deprecated. ' <<
+ 'Please just pass in custom headers directly.', caller[0,10])
+ params.merge!(custom_headers)
end
part = Mail::Part.new(params)
yield part if block_given?
@@ -386,7 +387,11 @@ def attachment(params, &block)
params = { :content_type => params } if String === params
params = { :content_disposition => "attachment",
:content_transfer_encoding => "base64" }.merge(params)
- params[:data] = params.delete(:body) if params[:body]
+ if params[:body]
+ ActiveSupport::Deprecation.warn('attachment :body => "string" is deprecated. To set the body of an attachment ' <<
+ 'please use :data instead, like attachment :data => "string".', caller[0,10])
+ params[:data] = params.delete(:body)
+ end
part(params, &block)
end
@@ -619,11 +624,11 @@ def create_mail
if @parts.empty?
main_type, sub_type = split_content_type(real_content_type)
m.content_type([main_type, sub_type, ctype_attrs])
- m.body = normalize_new_lines(body)
+ m.body = body
elsif @parts.size == 1 && @parts.first.parts.empty?
main_type, sub_type = split_content_type(real_content_type)
m.content_type([main_type, sub_type, ctype_attrs])
- m.body = normalize_new_lines(@parts.first.body)
+ m.body = @parts.first.body.encoded
else
@parts.each do |p|
m.add_part(p)
View
7 actionmailer/lib/action_mailer/utils.rb
@@ -1,7 +0,0 @@
-module ActionMailer
- module Utils #:nodoc:
- def normalize_new_lines(text)
- text.to_s.gsub(/\r\n?/, "\n")
- end
- end
-end
View
22 actionmailer/test/mail_service_test.rb
@@ -9,7 +9,7 @@ def multipart_with_template_path_with_dots(recipient)
subject "This path has dots"
from "Chad Fowler <chad@chadfowler.com>"
attachment :content_type => "text/plain",
- :body => "dots dots dots..."
+ :data => "dots dots dots..."
end
end
@@ -144,7 +144,7 @@ def explicitly_multipart_example(recipient, ct=nil)
end
attachment :content_type => "image/jpeg", :filename => File.join(File.dirname(__FILE__), "fixtures", "attachments", "foo.jpg"),
- :body => "123456789"
+ :data => "123456789"
render :text => "plain text default"
end
@@ -232,7 +232,7 @@ def nested_multipart(recipient)
p.part :content_type => "text/html", :body => "<b>test</b> HTML<br/>\nline #2"
end
- attachment :content_type => "application/octet-stream", :filename => "test.txt", :body => "test abcdefghijklmnopqstuvwxyz"
+ attachment :content_type => "application/octet-stream", :filename => "test.txt", :data => "test abcdefghijklmnopqstuvwxyz"
end
def nested_multipart_with_body(recipient)
@@ -252,7 +252,7 @@ def attachment_with_custom_header(recipient)
from "test@example.com"
content_type "multipart/related"
part :content_type => "text/html", :body => 'yo'
- attachment :content_type => "image/jpeg", :filename => File.join(File.dirname(__FILE__), "fixtures", "attachments", "test.jpg"), :body => "i am not a real picture", :headers => { 'Content-ID' => '<test@test.com>' }
+ attachment :content_type => "image/jpeg", :filename => File.join(File.dirname(__FILE__), "fixtures", "attachments", "test.jpg"), :data => "i am not a real picture", :headers => { 'Content-ID' => '<test@test.com>' }
end
def unnamed_attachment(recipient)
@@ -261,7 +261,7 @@ def unnamed_attachment(recipient)
from "test@example.com"
content_type "multipart/mixed"
part :content_type => "text/plain", :body => "hullo"
- attachment :content_type => "application/octet-stream", :body => "test abcdefghijklmnopqstuvwxyz"
+ attachment :content_type => "application/octet-stream", :data => "test abcdefghijklmnopqstuvwxyz"
end
def headers_with_nonalpha_chars(recipient)
@@ -1020,9 +1020,15 @@ def test_decode_encoded_attachment_filename
attachment = mail.attachments.last
expected = "01 Quien Te Dij\212at. Pitbull.mp3"
- expected.force_encoding(Encoding::ASCII_8BIT) if expected.respond_to?(:force_encoding)
-
- assert_equal expected, attachment.original_filename
+
+ if expected.respond_to?(:force_encoding)
+ result = attachment.original_filename.dup
+ expected.force_encoding(Encoding::ASCII_8BIT)
+ result.force_encoding(Encoding::ASCII_8BIT)
+ assert_equal expected, result
+ else
+ assert_equal expected, attachment.original_filename
+ end
end
def test_decode_message_with_unknown_charset
View
4 actionmailer/test/quoting_test.rb
@@ -57,6 +57,10 @@ def test_quote_multibyte_chars
CODE
unquoted = Mail::Encodings.unquote_and_convert_to(result, nil)
+
+ unquoted.force_encoding(Encoding::ASCII_8BIT) if unquoted.respond_to?(:force_encoding)
+ original.force_encoding(Encoding::ASCII_8BIT) if original.respond_to?(:force_encoding)
+
assert_equal unquoted, original
end

0 comments on commit 671538c

Please sign in to comment.