aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/uri/mailto.rb10
-rw-r--r--test/uri/test_mailto.rb6
2 files changed, 11 insertions, 5 deletions
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