diff --git a/lib/uri/mailto.rb b/lib/uri/mailto.rb index b9e98e66bb..1494c3952b 100644 --- a/lib/uri/mailto.rb +++ b/lib/uri/mailto.rb @@ -267,18 +267,18 @@ module URI # # => "To: ruby-list@ruby-lang.org\nSubject: subscribe\nCc: myaddr\n\n\n" # def to_mailtext - to = parser.unescape(@to) + to = URI.decode_www_form_component(@to) head = '' body = '' @headers.each do |x| case x[0] when 'body' - body = parser.unescape(x[1]) + body = URI.decode_www_form_component(x[1]) when 'to' - to << ', ' + parser.unescape(x[1]) + to << ', ' + URI.decode_www_form_component(x[1]) else - head << parser.unescape(x[0]).capitalize + ': ' + - parser.unescape(x[1]) + "\n" + head << URI.decode_www_form_component(x[0]).capitalize + ': ' + + URI.decode_www_form_component(x[1]) + "\n" end end diff --git a/test/uri/test_mailto.rb b/test/uri/test_mailto.rb index 39a0f9cdeb..e58e9711e6 100644 --- a/test/uri/test_mailto.rb +++ b/test/uri/test_mailto.rb @@ -187,6 +187,12 @@ class TestMailTo < Test::Unit::TestCase u.select(:scheme, :host, :not_exist, :port) end end + + def test_to_mailtext + u = URI.parse('mailto:ruby-list@ruby-lang.org?Subject=subscribe&cc=myaddr') + assert_equal "To: ruby-list@ruby-lang.org\nSubject: subscribe\nCc: myaddr\n\n\n", + u.to_mailtext + end end