diff --git a/inc/mail.php b/inc/mail.php
index d0ea651bf78367f7fc2c39694b4941da1fa571b2..0b60c0a5b28d85763cff14560dfb6b19935b72d0 100644
--- a/inc/mail.php
+++ b/inc/mail.php
@@ -284,10 +284,9 @@ function mail_quotedprintable_encode($sText,$maxlen=74,$bEmulate_imap_8bit=true)
         // for EBCDIC safeness encode !"#$@[\]^`{|}~,
         // for complete safeness encode every character :)
         if ($bEmulate_imap_8bit)
-            $sRegExp = '/[^\x20\x21-\x3C\x3E-\x7E]/e';
+            $sRegExp = '/[^\x20\x21-\x3C\x3E-\x7E]/';
 
-        $sReplmt = 'sprintf( "=%02X", ord ( "$0" ) ) ;';
-        $sLine = preg_replace( $sRegExp, $sReplmt, $sLine );
+        $sLine = preg_replace_callback( $sRegExp, 'mail_quotedprintable_encode_callback', $sLine );
 
         // encode x09,x20 at lineends
         {
@@ -330,3 +329,6 @@ function mail_quotedprintable_encode($sText,$maxlen=74,$bEmulate_imap_8bit=true)
     return implode(MAILHEADER_EOL,$aLines);
 }
 
+function mail_quotedprintable_encode_callback($matches){
+    return sprintf( "=%02X", ord ( $matches[0] ) ) ;
+}