diff --git a/lib/sup/message.rb b/lib/sup/message.rb
index f9f87de..4ad0b88 100644
--- a/lib/sup/message.rb
+++ b/lib/sup/message.rb
@@ -477,6 +477,10 @@ private
           $1
         elsif m.header["Content-Type"] && m.header["Content-Type"] =~ /name="?(.*?[^\\])("|;|$)/i
           $1
+        elsif m.header["Content-Disposition"] && m.header["Content-Disposition"] =~ /filename\*="?UTF-8''(.*?[^\\])("|;|$)/
+          $1
+        elsif m.header["Content-Type"] && m.header["Content-Type"] =~ /name\*="?UTF-8''(.*?[^\\])("|;|$)/i
+          $1
 
         ## haven't found one, but it's a non-text message. fake
         ## it.
@@ -486,7 +490,7 @@ private
           extension =
             case m.header["Content-Type"]
             when /text\/html/ then "html"
-            when /image\/(.*)/ then $1
+            when /image\/([^;]*)/ then $1
             end
 
           ["sup-attachment-#{Time.now.to_i}-#{rand 10000}", extension].join(".")
