WordPress.org

Make WordPress Core

Ticket #21659: 21659.alt.diff

File 21659.alt.diff, 2.8 KB (added by iandunn, 4 years ago)

Alternate style in case this is considered more readable

  • src/wp-includes/pluggable.php

     
    248248                        $tempheaders = $headers;
    249249                }
    250250                $headers = array();
    251                 $cc = array();
    252                 $bcc = array();
     251                $cc = $bcc = $reply_to = array();
    253252
    254253                // If it's actually got contents
    255254                if ( !empty( $tempheaders ) ) {
     
    305304                                        case 'bcc':
    306305                                                $bcc = array_merge( (array) $bcc, explode( ',', $content ) );
    307306                                                break;
     307                                        case 'reply-to':
     308                                                $reply_to = array_merge( (array) $reply_to, explode( ',', $content ) );
     309                                                break;
    308310                                        default:
    309311                                                // Add it to our grand headers array
    310312                                                $headers[trim( $name )] = trim( $content );
     
    370372        $phpmailer->Subject = $subject;
    371373        $phpmailer->Body    = $message;
    372374
    373         // Add any CC and BCC recipients
    374         if ( !empty( $cc ) ) {
    375                 foreach ( (array) $cc as $recipient ) {
    376                         try {
    377                                 // Break $recipient into name and address parts if in the format "Foo <bar@baz.com>"
    378                                 $recipient_name = '';
    379                                 if( preg_match( '/(.*)<(.+)>/', $recipient, $matches ) ) {
    380                                         if ( count( $matches ) == 3 ) {
    381                                                 $recipient_name = $matches[1];
    382                                                 $recipient = $matches[2];
     375        // Add any CC, BCC, and Reply-To recipients
     376        foreach ( array( 'cc', 'bcc', 'reply_to' ) as $recipient_header ) {
     377                if ( ! empty( $$recipient_header ) ) {
     378                        foreach ( $$recipient_header as $recipient ) {
     379                                try {
     380                                        // Break $recipient into name and address parts if in the format "Foo <bar@baz.com>"
     381                                        $recipient_name = '';
     382                                        if( preg_match( '/(.*)<(.+)>/', $recipient, $matches ) ) {
     383                                                if ( count( $matches ) == 3 ) {
     384                                                        $recipient_name = $matches[1];
     385                                                        $recipient = $matches[2];
     386                                                }
    383387                                        }
    384                                 }
    385                                 $phpmailer->AddCc( $recipient, $recipient_name );
    386                         } catch ( phpmailerException $e ) {
    387                                 continue;
    388                         }
    389                 }
    390         }
     388                                       
     389                                        switch ( $recipient_header ) {
     390                                                case 'cc':
     391                                                        $phpmailer->AddCC( $recipient, $recipient_name );
     392                                                break;
    391393
    392         if ( !empty( $bcc ) ) {
    393                 foreach ( (array) $bcc as $recipient) {
    394                         try {
    395                                 // Break $recipient into name and address parts if in the format "Foo <bar@baz.com>"
    396                                 $recipient_name = '';
    397                                 if( preg_match( '/(.*)<(.+)>/', $recipient, $matches ) ) {
    398                                         if ( count( $matches ) == 3 ) {
    399                                                 $recipient_name = $matches[1];
    400                                                 $recipient = $matches[2];
     394                                                case 'bcc':
     395                                                        $phpmailer->AddBcc( $recipient, $recipient_name );
     396                                                break;
     397
     398                                                case 'reply_to':
     399                                                        $phpmailer->AddReplyTo( $recipient, $recipient_name );
     400                                                break;
    401401                                        }
     402                                } catch ( phpmailerException $e ) {
     403                                        continue;
    402404                                }
    403                                 $phpmailer->AddBcc( $recipient, $recipient_name );
    404                         } catch ( phpmailerException $e ) {
    405                                 continue;
    406405                        }
    407406                }
    408407        }