From a13e752b69cf306ec7b1be6af007eaafd5ef5d3d Mon Sep 17 00:00:00 2001 From: Chad Horohoe Date: Wed, 15 Dec 2010 19:55:08 +0000 Subject: [PATCH] When using safe_mode, mail() cannot take the 5th parameter. Rather than (needlessly) disabling e-mail confirmation as a result, just disregard the parameter. Pointed out by Kunda on IRC. --- includes/DefaultSettings.php | 1 + includes/UserMailer.php | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index f60eb61fcc..3db8ece006 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -1043,6 +1043,7 @@ $wgSMTP = false; /** * Additional email parameters, will be passed as the last argument to mail() call. + * If using safe_mode this has no effect */ $wgAdditionalMailParams = null; diff --git a/includes/UserMailer.php b/includes/UserMailer.php index 91eaab7302..17fd74cf33 100644 --- a/includes/UserMailer.php +++ b/includes/UserMailer.php @@ -223,12 +223,19 @@ class UserMailer { ini_set( 'html_errors', '0' ); set_error_handler( array( 'UserMailer', 'errorHandler' ) ); - if ( is_array( $to ) ) { - foreach ( $to as $recip ) { + // We need to check for safe_mode, because mail() throws an E_NOTICE + // on the 5th parameter when it's turned on + $sm = wfIniGetBool( 'safe_mode' ); + + if ( !is_array( $to ) ) { + $to = array( $to ); + } + foreach ( $to as $recip ) { + if( $sm ) { + $sent = mail( $recip->toString(), self::quotedPrintable( $subject ), $body, $headers ); + } else { $sent = mail( $recip->toString(), self::quotedPrintable( $subject ), $body, $headers, $wgAdditionalMailParams ); } - } else { - $sent = mail( $to->toString(), self::quotedPrintable( $subject ), $body, $headers, $wgAdditionalMailParams ); } restore_error_handler(); -- 2.20.1