diff --git a/core/modules/system/system.mail.inc b/core/modules/system/system.mail.inc
index c137b3f..227a7d4 100644
--- a/core/modules/system/system.mail.inc
+++ b/core/modules/system/system.mail.inc
@@ -65,10 +65,11 @@ class DefaultMailSystem implements MailSystemInterface {
     // For headers, PHP's API suggests that we use CRLF normally,
     // but some MTAs incorrectly replace LF with CRLF. See #234403.
     $mail_headers = join("\n", $mimeheaders);
-    if (isset($message['Return-Path']) && !ini_get('safe_mode')) {
-      if (!isset($_SERVER['WINDIR']) && strpos($_SERVER['SERVER_SOFTWARE'], 'Win32') === FALSE) {
+    if (!isset($_SERVER['WINDIR']) && strpos($_SERVER['SERVER_SOFTWARE'], 'Win32') === FALSE) {
+      if (isset($message['Return-Path']) && !ini_get('safe_mode')) {
         // On most non-Windows systems, the "-f" option to the sendmail command
-        // is used to set the Return-Path.
+        // is used to set the Return-Path. There is no space between -f and
+        // the value of the return path.
         $mail_result = @mail(
           $message['to'],
           $mail_subject,
@@ -78,19 +79,30 @@ class DefaultMailSystem implements MailSystemInterface {
         );
       }
       else {
-        // On Windows, PHP will use the value of sendmail_from for the
-        // Return-Path header.
-        $old_from = ini_get('sendmail_from');
-        ini_set('sendmail_from', $message['Return-Path']);
+        // The optional $additional_parameters argument to mail() is not
+        // allowed if safe_mode is enabled. Passing any value throws a PHP
+        // warning and makes mail() return FALSE.
         $mail_result = @mail(
           $message['to'],
           $mail_subject,
           $mail_body,
           $mail_headers
         );
-        ini_set('sendmail_from', $old_from);
       }
     }
+    else {
+      // On Windows, PHP will use the value of sendmail_from for the
+      // Return-Path header.
+      $old_from = ini_get('sendmail_from');
+      ini_set('sendmail_from', $message['Return-Path']);
+      $mail_result = @mail(
+        $message['to'],
+        $mail_subject,
+        $mail_body,
+        $mail_headers
+      );
+      ini_set('sendmail_from', $old_from);
+    }
     return $mail_result;
   }
 }
