Index: class/mime/AddressStructure.class.php
===================================================================
--- class/mime/AddressStructure.class.php	(revision 13800)
+++ class/mime/AddressStructure.class.php	(working copy)
@@ -60,12 +60,13 @@
                                   : $this->mailbox);
             $personal = trim($this->personal);
             $is_encoded = false;
+            // FIXME: I don't think the U modifier below does anything at all
             if (preg_match('/(=\?([^?]*)\?(Q|B)\?([^?]*)\?=)(.*)/Ui',$personal,$reg)) {
                 $is_encoded = true;
             }
             if ($personal) {
                 if ($encoded && !$is_encoded) {
-                    $personal_encoded = encodeHeader($personal);
+                    $personal_encoded = encodeHeader('"' . $personal . '"');
                     if ($personal !== $personal_encoded) {
                         $personal = $personal_encoded;
                     } else {
Index: src/compose.php
===================================================================
--- src/compose.php	(revision 13825)
+++ src/compose.php	(working copy)
@@ -1525,7 +1525,7 @@
     if (!$rfc822_header->from[0]->host) $rfc822_header->from[0]->host = $domain;
     if ($full_name) {
         $from = $rfc822_header->from[0];
-        $full_name_encoded = encodeHeader($full_name);
+        $full_name_encoded = encodeHeader('"' . $full_name . '"');
         if ($full_name_encoded != $full_name) {
             $from_addr = $full_name_encoded .' <'.$from->mailbox.'@'.$from->host.'>';
         } else {
Index: functions/mime.php
===================================================================
--- functions/mime.php	(revision 13833)
+++ functions/mime.php	(working copy)
@@ -789,6 +789,7 @@
     for($i = 0; $i < $j; ++$i) {
         switch($string{$i})
         {
+            case '"':
             case '=':
             case '<':
             case '>':
