aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer
diff options
context:
space:
mode:
authorJamis Buck <jamis@37signals.com>2005-06-06 16:12:38 +0000
committerJamis Buck <jamis@37signals.com>2005-06-06 16:12:38 +0000
commit481d579734ac077f69fcd2db69c3dffdfd6f260a (patch)
tree00e79637081b5cd7e0c16ae73f8638bcb99d6628 /actionmailer
parentcf1e2a84fff32ab1cf2a736bb99c53e830d92db3 (diff)
downloadrails-481d579734ac077f69fcd2db69c3dffdfd6f260a.tar.gz
rails-481d579734ac077f69fcd2db69c3dffdfd6f260a.tar.bz2
rails-481d579734ac077f69fcd2db69c3dffdfd6f260a.zip
Don't error while processing encoded attachment names #1340 [lon@speedymac.com]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1390 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionmailer')
-rw-r--r--actionmailer/CHANGELOG2
-rwxr-xr-xactionmailer/lib/action_mailer/vendor/tmail/utils.rb8
-rw-r--r--actionmailer/test/fixtures/raw_email847
-rwxr-xr-xactionmailer/test/mail_service_test.rb7
4 files changed, 62 insertions, 2 deletions
diff --git a/actionmailer/CHANGELOG b/actionmailer/CHANGELOG
index 567025126b..9f0bfd4a68 100644
--- a/actionmailer/CHANGELOG
+++ b/actionmailer/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Don't cause an error when parsing an encoded attachment name #1340 [lon@speedymac.com]
+
* Nested multipart message parts are correctly processed in TMail::Mail#body
* BCC headers are removed when sending via SMTP #1402
diff --git a/actionmailer/lib/action_mailer/vendor/tmail/utils.rb b/actionmailer/lib/action_mailer/vendor/tmail/utils.rb
index 57df234464..57919473f1 100755
--- a/actionmailer/lib/action_mailer/vendor/tmail/utils.rb
+++ b/actionmailer/lib/action_mailer/vendor/tmail/utils.rb
@@ -206,8 +206,12 @@ module TMail
def decode_RFC2231( str )
m = RFC2231_ENCODED.match(str) or return str
- NKF.nkf(NKF_FLAGS[$KCODE],
- m.post_match.gsub(/%[\da-f]{2}/in) {|s| s[1,2].hex.chr })
+ begin
+ NKF.nkf(NKF_FLAGS[$KCODE],
+ m.post_match.gsub(/%[\da-f]{2}/in) {|s| s[1,2].hex.chr })
+ rescue
+ m.post_match.gsub(/%[\da-f]{2}/in, "")
+ end
end
end
diff --git a/actionmailer/test/fixtures/raw_email8 b/actionmailer/test/fixtures/raw_email8
new file mode 100644
index 0000000000..2382dfdf34
--- /dev/null
+++ b/actionmailer/test/fixtures/raw_email8
@@ -0,0 +1,47 @@
+From xxxxxxxxx.xxxxxxx@gmail.com Sun May 8 19:07:09 2005
+Return-Path: <xxxxxxxxx.xxxxxxx@gmail.com>
+Message-ID: <e85734b90505081209eaaa17b@mail.gmail.com>
+Date: Sun, 8 May 2005 14:09:11 -0500
+From: xxxxxxxxx xxxxxxx <xxxxxxxxx.xxxxxxx@gmail.com>
+Reply-To: xxxxxxxxx xxxxxxx <xxxxxxxxx.xxxxxxx@gmail.com>
+To: xxxxx xxxx <xxxxx@xxxxxxxxx.com>
+Subject: Fwd: Signed email causes file attachments
+In-Reply-To: <F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@mac.com>
+Mime-Version: 1.0
+Content-Type: multipart/mixed;
+ boundary="----=_Part_5028_7368284.1115579351471"
+References: <F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@mac.com>
+
+------=_Part_5028_7368284.1115579351471
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: quoted-printable
+Content-Disposition: inline
+
+We should not include these files or vcards as attachments.
+
+---------- Forwarded message ----------
+From: xxxxx xxxxxx <xxxxxxxx@xxx.com>
+Date: May 8, 2005 1:17 PM
+Subject: Signed email causes file attachments
+To: xxxxxxx@xxxxxxxxxx.com
+
+
+Hi,
+
+Test attachments oddly encoded with japanese charset.
+
+
+------=_Part_5028_7368284.1115579351471
+Content-Type: application/octet-stream; name*=iso-2022-jp'ja'01%20Quien%20Te%20Dij%8aat.%20Pitbull.mp3
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment
+
+MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGFDCCAs0w
+ggI2oAMCAQICAw5c+TANBgkqhkiG9w0BAQQFADBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh
+d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVt
+YWlsIElzc3VpbmcgQ0EwHhcNMDUwMzI5MDkzOTEwWhcNMDYwMzI5MDkzOTEwWjBCMR8wHQYDVQQD
+ExZUaGF3dGUgRnJlZW1haWwgTWVtYmVyMR8wHQYJKoZIhvcNAQkBFhBzbWhhdW5jaEBtYWMuY29t
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn90dPsYS3LjfMY211OSYrDQLzwNYPlAL
+7+/0XA+kdy8/rRnyEHFGwhNCDmg0B6pxC7z3xxJD/8GfCd+IYUUNUQV5m9MkxfP9pTVXZVIYLaBw
+------=_Part_5028_7368284.1115579351471--
+
diff --git a/actionmailer/test/mail_service_test.rb b/actionmailer/test/mail_service_test.rb
index 9f0e51716f..48fe0941bb 100755
--- a/actionmailer/test/mail_service_test.rb
+++ b/actionmailer/test/mail_service_test.rb
@@ -503,5 +503,12 @@ EOF
mail = TMail::Mail.parse(fixture)
assert_equal "This is the first part.\n\nAttachment: test.pdf\n\n\nAttachment: smime.p7s\n", mail.body
end
+
+ def test_decode_encoded_attachment_filename
+ fixture = File.read(File.dirname(__FILE__) + "/fixtures/raw_email8")
+ mail = TMail::Mail.parse(fixture)
+ attachment = mail.attachments.last
+ assert_equal "01QuienTeDijat.Pitbull.mp3", attachment.original_filename
+ end
end