From 93d20e881c618ba2df4f1d0d570a2bdfeddb4a1e Mon Sep 17 00:00:00 2001 From: Bob Vincent Date: Sat, 21 May 2011 10:59:06 -0400 Subject: [PATCH] Issue #131737 by score, vince, AmrMostafa, Pancho, mrfelton, nvanhove, malc0mn, dhthwy, pillarsdotnet: Ensure that the Return-Path is set when sending mail on both Windows and non-Windows systems. --- modules/system/system.mail.inc | 43 ++++++++++++++++++++++----------------- 1 files changed, 24 insertions(+), 19 deletions(-) diff --git a/modules/system/system.mail.inc b/modules/system/system.mail.inc index ef50642c55a9db8c36ceb9a976f5f0d78096a3fc..69d4d0a640691c2b5c54028b401da71f4421c7a8 100644 --- a/modules/system/system.mail.inc +++ b/modules/system/system.mail.inc @@ -66,25 +66,30 @@ class DefaultMailSystem implements MailSystemInterface { // but some MTAs incorrectly replace LF with CRLF. See #234403. $mail_headers = join("\n", $mimeheaders); if (isset($message['Return-Path']) && !ini_get('safe_mode')) { - $mail_result = mail( - $message['to'], - $mail_subject, - $mail_body, - $mail_headers, - // Pass the Return-Path via sendmail's -f command. - '-f ' . $message['Return-Path'] - ); - } - else { - // 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 - ); + if (isset($_SERVER['WINDIR']) || strpos($_SERVER['SERVER_SOFTWARE'], 'Win32') !== FALSE) { + // 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); + } + else { + // On most non-Windows systems, the "-f" option to the sendmail command + // is used to set the Return-Path. + $mail_result = @mail( + $message['to'], + $mail_subject, + $mail_body, + $mail_headers, + '-f' . $message['Return-Path'] + ); + } } return $mail_result; } -- 1.7.4.1