diff --git a/inc/mail.php b/inc/mail.php
index f991909d00ab34f71ccd680575f113f861a4d39f..bd6c0db6a507f1f461555d553e1b6b5d4cca359c 100644
--- a/inc/mail.php
+++ b/inc/mail.php
@@ -203,7 +203,16 @@ function mail_encode_address($string,$header='',$names=true){
             }
 
             if(!utf8_isASCII($text)){
-                $text = '=?UTF-8?Q?'.mail_quotedprintable_encode($text,0).'?=';
+                // put the quotes outside as in =?UTF-8?Q?"Elan Ruusam=C3=A4e"?= vs "=?UTF-8?Q?Elan Ruusam=C3=A4e?="
+                if (preg_match('/^"(.+)"$/', $text, $matches)) {
+                  $text = '"=?UTF-8?Q?'.mail_quotedprintable_encode($matches[1], 0).'?="';
+                } else {
+                  $text = '=?UTF-8?Q?'.mail_quotedprintable_encode($text, 0).'?=';
+                }
+                // additionally the space character should be encoded as =20 (or each
+                // word QP encoded separately).
+                // however this is needed only in mail headers, not globally in mail_quotedprintable_encode().
+                $text = str_replace(" ", "=20", $text);
             }
         }else{
             $text = '';