@@ -4128,7 +4128,9 @@ PHP_FUNCTION(mb_send_mail)
41284128 || orig_str .encoding -> no_encoding == mbfl_no_encoding_pass ) {
41294129 orig_str .encoding = mbfl_identify_encoding (& orig_str , MBSTRG (current_detect_order_list ), MBSTRG (current_detect_order_list_size ), MBSTRG (strict_detection ));
41304130 }
4131- pstr = mbfl_mime_header_encode (& orig_str , & conv_str , tran_cs , head_enc , CRLF , sizeof ("Subject: [PHP-jp nnnnnnnn]" CRLF ) - 1 );
4131+ const char * line_sep = PG (mail_mixed_lf_and_crlf ) ? "\n" : CRLF ;
4132+ size_t line_sep_len = strlen (line_sep );
4133+ pstr = mbfl_mime_header_encode (& orig_str , & conv_str , tran_cs , head_enc , line_sep , strlen ("Subject: [PHP-jp nnnnnnnn]" ) + line_sep_len );
41324134 if (pstr != NULL ) {
41334135 subject_buf = subject = (char * )pstr -> val ;
41344136 }
@@ -4167,14 +4169,14 @@ PHP_FUNCTION(mb_send_mail)
41674169 n = ZSTR_LEN (str_headers );
41684170 mbfl_memory_device_strncat (& device , p , n );
41694171 if (n > 0 && p [n - 1 ] != '\n' ) {
4170- mbfl_memory_device_strncat (& device , CRLF , sizeof ( CRLF ) - 1 );
4172+ mbfl_memory_device_strncat (& device , line_sep , line_sep_len );
41714173 }
41724174 zend_string_release_ex (str_headers , 0 );
41734175 }
41744176
41754177 if (!zend_hash_str_exists (& ht_headers , "mime-version" , sizeof ("mime-version" ) - 1 )) {
41764178 mbfl_memory_device_strncat (& device , PHP_MBSTR_MAIL_MIME_HEADER1 , sizeof (PHP_MBSTR_MAIL_MIME_HEADER1 ) - 1 );
4177- mbfl_memory_device_strncat (& device , CRLF , sizeof ( CRLF ) - 1 );
4179+ mbfl_memory_device_strncat (& device , line_sep , line_sep_len );
41784180 }
41794181
41804182 if (!suppressed_hdrs .cnt_type ) {
@@ -4185,7 +4187,7 @@ PHP_FUNCTION(mb_send_mail)
41854187 mbfl_memory_device_strncat (& device , PHP_MBSTR_MAIL_MIME_HEADER3 , sizeof (PHP_MBSTR_MAIL_MIME_HEADER3 ) - 1 );
41864188 mbfl_memory_device_strcat (& device , p );
41874189 }
4188- mbfl_memory_device_strncat (& device , CRLF , sizeof ( CRLF ) - 1 );
4190+ mbfl_memory_device_strncat (& device , line_sep , line_sep_len );
41894191 }
41904192 if (!suppressed_hdrs .cnt_trans_enc ) {
41914193 mbfl_memory_device_strncat (& device , PHP_MBSTR_MAIL_MIME_HEADER4 , sizeof (PHP_MBSTR_MAIL_MIME_HEADER4 ) - 1 );
@@ -4194,10 +4196,12 @@ PHP_FUNCTION(mb_send_mail)
41944196 p = "7bit" ;
41954197 }
41964198 mbfl_memory_device_strcat (& device , p );
4197- mbfl_memory_device_strncat (& device , CRLF , sizeof ( CRLF ) - 1 );
4199+ mbfl_memory_device_strncat (& device , line_sep , line_sep_len );
41984200 }
41994201
4200- mbfl_memory_device_unput (& device );
4202+ if (!PG (mail_mixed_lf_and_crlf )) {
4203+ mbfl_memory_device_unput (& device );
4204+ }
42014205 mbfl_memory_device_unput (& device );
42024206 mbfl_memory_device_output ('\0' , & device );
42034207 str_headers = zend_string_init ((char * )device .buffer , strlen ((char * )device .buffer ), 0 );
0 commit comments