@@ -3513,8 +3513,8 @@ PHP_FUNCTION(mb_send_mail)
3513
3513
size_t message_len ;
3514
3514
char * subject ;
3515
3515
size_t subject_len ;
3516
- zval * headers = NULL ;
3517
3516
zend_string * extra_cmd = NULL ;
3517
+ HashTable * headers_ht = NULL ;
3518
3518
zend_string * str_headers = NULL , * tmp_headers ;
3519
3519
size_t n , i ;
3520
3520
char * to_r = NULL ;
@@ -3560,30 +3560,24 @@ PHP_FUNCTION(mb_send_mail)
3560
3560
Z_PARAM_STRING (subject , subject_len )
3561
3561
Z_PARAM_STRING (message , message_len )
3562
3562
Z_PARAM_OPTIONAL
3563
- Z_PARAM_ZVAL ( headers )
3564
- Z_PARAM_STR (extra_cmd )
3563
+ Z_PARAM_STR_OR_ARRAY_HT_OR_NULL ( str_headers , headers_ht )
3564
+ Z_PARAM_STR_OR_NULL (extra_cmd )
3565
3565
ZEND_PARSE_PARAMETERS_END ();
3566
3566
3567
3567
/* ASCIIZ check */
3568
3568
MAIL_ASCIIZ_CHECK_MBSTRING (to , to_len );
3569
3569
MAIL_ASCIIZ_CHECK_MBSTRING (subject , subject_len );
3570
3570
MAIL_ASCIIZ_CHECK_MBSTRING (message , message_len ) ;
3571
- if (headers ) {
3572
- switch (Z_TYPE_P (headers )) {
3573
- case IS_STRING :
3574
- tmp_headers = zend_string_init (Z_STRVAL_P (headers ), Z_STRLEN_P (headers ), 0 );
3575
- MAIL_ASCIIZ_CHECK_MBSTRING (ZSTR_VAL (tmp_headers ), ZSTR_LEN (tmp_headers ));
3576
- str_headers = php_trim (tmp_headers , NULL , 0 , 2 );
3577
- zend_string_release_ex (tmp_headers , 0 );
3578
- break ;
3579
- case IS_ARRAY :
3580
- str_headers = php_mail_build_headers (Z_ARRVAL_P (headers ));
3581
- break ;
3582
- default :
3583
- zend_argument_value_error (4 , "must be of type string|array|null, %s given" , zend_zval_type_name (headers ));
3584
- RETURN_THROWS ();
3585
- }
3571
+
3572
+ if (str_headers ) {
3573
+ tmp_headers = zend_string_init (ZSTR_VAL (str_headers ), ZSTR_LEN (str_headers ), 0 );
3574
+ MAIL_ASCIIZ_CHECK_MBSTRING (ZSTR_VAL (tmp_headers ), ZSTR_LEN (tmp_headers ));
3575
+ str_headers = php_trim (tmp_headers , NULL , 0 , 2 );
3576
+ zend_string_release_ex (tmp_headers , 0 );
3577
+ } else if (headers_ht ) {
3578
+ str_headers = php_mail_build_headers (headers_ht );
3586
3579
}
3580
+
3587
3581
if (extra_cmd ) {
3588
3582
MAIL_ASCIIZ_CHECK_MBSTRING (ZSTR_VAL (extra_cmd ), ZSTR_LEN (extra_cmd ));
3589
3583
}
0 commit comments