diff -ru sup-0.7/lib/sup/modes/edit-message-mode.rb sup-mine/lib/sup/modes/edit-message-mode.rb
--- sup-0.7/lib/sup/modes/edit-message-mode.rb	2009-04-27 21:24:10.538835364 +0200
+++ sup-mine/lib/sup/modes/edit-message-mode.rb	2009-04-27 21:23:58.330834848 +0200
@@ -3,6 +3,8 @@
 require 'pathname'
 require 'rmail'
 
+require 'jcode' # for RE_UTF8
+
 module Redwood
 
 class SendmailCommandFailed < StandardError; end
@@ -168,6 +170,31 @@
 
 protected
 
+  def mime_encode(string)
+    string = [string].pack('M') # basic quoted-printable
+    string.gsub!(/=\n/,'')      # .. remove trailing newline
+    string.gsub!(/_/,'=96')     # .. encode underscores
+    string.gsub!(/\?/,'=3F')    # .. encode question marks
+    string.gsub!(/ /,'_')       # .. translate space to underscores
+    string = "=?utf-8?q?#{string}?="
+    return string
+  end
+
+  def mime_encode_subject(string)
+    return string unless string.match(String::RE_UTF8) 
+    return mime_encode(string)
+  end
+
+  RE_ADDRESS = /(.+)( <.*@.*>)/
+
+  # Encode "bælammet mitt <user@example.com>" into
+  # "=?utf-8?q?b=C3=A6lammet_mitt?= <user@example.com>
+  def mime_encode_address(string)
+    return string unless string.match(String::RE_UTF8) 
+    string.sub!(RE_ADDRESS) {|match| mime_encode($1) + $2} 
+    return string
+  end
+
   def move_cursor_left
     if curpos < @selectors.length
       @selectors[curpos].roll_left
@@ -333,14 +360,15 @@
       m.header[k] = 
         case v
         when String
-          v
+          k.match(/subject/i) ? mime_encode_subject(v) : mime_encode_address(v)
         when Array
-          v.join ", "
+          v.map{|v| mime_encode_address(v)}.join", "
         end
     end
     m.header["Date"] = date.rfc2822
     m.header["Message-Id"] = @message_id
     m.header["User-Agent"] = "Sup/#{Redwood::VERSION}"
+    m.header["Content-Transfer-Encoding"] = '8bit'
     m
   end
 
