Index: src/wp-includes/pluggable.php
===================================================================
--- src/wp-includes/pluggable.php	(revision 32329)
+++ src/wp-includes/pluggable.php	(working copy)
@@ -284,16 +284,18 @@
 		// If it's actually got contents
 		if ( !empty( $tempheaders ) ) {
 			// Iterate through the raw headers
-			foreach ( (array) $tempheaders as $header ) {
+			foreach ( (array) $tempheaders as $key => $header ) {
 				if ( strpos($header, ':') === false ) {
 					if ( false !== stripos( $header, 'boundary=' ) ) {
 						$parts = preg_split('/boundary=/i', trim( $header ) );
 						$boundary = trim( str_replace( array( "'", '"' ), '', $parts[1] ) );
 					}
-					continue;
+					if ( is_numeric ( $key ) ) {
+						continue;
+					}
 				}
 				// Explode them out
-				list( $name, $content ) = explode( ':', trim( $header ), 2 );
+				list( $name, $content ) = ( is_numeric ( $key ) ) ? explode( ':', trim( $header ), 2 ) : array ( $key, $header );
 
 				// Cleanup crew
 				$name    = trim( $name    );
@@ -337,11 +339,15 @@
 						}
 						break;
 					case 'cc':
-						$cc = array_merge( (array) $cc, explode( ',', $content ) );
-						break;
+						$cc = array_merge(
+							(array) $cc,
+							( is_array ( $content ) ) ? $content : explode( ',', $content )
+						);
 					case 'bcc':
-						$bcc = array_merge( (array) $bcc, explode( ',', $content ) );
-						break;
+						$bcc = array_merge(
+							(array) $bcc,
+							( is_array ( $content ) ) ? $content : explode( ',', $content )
+						);
 					default:
 						// Add it to our grand headers array
 						$headers[trim( $name )] = trim( $content );
