Возникли проблемы с установкой массива $ headers в почтовой функции PHP


Я не могу отправлять электронную почту через функцию PHP mail, пока я указываю массив $ headers как

$headers = array (
               'From' => "info@mysite.com",
               'Content-type' => "text/html;charset=UTF-8"
               );

Или

$headers=array(
    'From: "info@mysite.com',
    'Content-Type:text/html;charset=UTF-8',
    'Reply-To: "info@mysite.com'
);

А вот код

 <?php
   $email = 'test@test.com';
   $headers=array(
    'From: "info@mysite.com',
    'Content-Type:text/html;charset=UTF-8',
    'Reply-To: info@mysite.com'
);

$msg= 'This is a Test';

 mail($email, "Call Back Requert Confirmation", $msg, $headers);
?>

Можете ли вы пожалуйста, дайте мне знать, почему это происходит? и как я могу это исправить?

3 2

3 ответа:

Ваш код должен быть:

Если вы хотите отправить $headers через массив, то вам нужно добавить \r\n Конец всех заголовков и преобразовать их в srting.

$headers = array(
    'From: <info@mysite.com>',
    'Content-Type:text/html;charset=UTF-8',
    'Reply-To: <info@mysite.com>'
);
$headers = implode("\r\n", $headers);

Попробуйте отправить заголовки в виде строки, а не массива

$headers = "From: info@mysite.com\r\n"; 
$headers.= "MIME-Version: 1.0\r\n"; 
$headers.= "Content-Type:text/html;charset=UTF-8\r\n"; 

Или с помощью массива преобразовать массив в строку с помощью implode() и отправить его в mail()

$headers = implode("\r\n", $headers);
mail($email, "Call Back Requert Confirmation", $msg, $headers);

$headers должна быть строка, а не массив:

Http://php.net/manual/en/function.mail.php

$headers = 
    'From: info@mysite.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'MIME-Version: 1.0' . "\r\n" .
    'Content-type: text/html; charset=iso-8859-1' . "\r\n"
;

mail($email, "Call Back Requert Confirmation", $msg, $headers);

Если вы хотите сохранить $headers как массив, вы также можете сделать

mail($email, "Call Back Requert Confirmation", $msg, implode("\r\n", $headers));