在PHP邮件函数中设置$headers数组时出现问题

在PHP邮件函数中设置$headers数组时出现问题,php,email,email-headers,Php,Email,Email Headers,当我将$headers数组指定为 $headers = array ( 'From' => "info@mysite.com", 'Content-type' => "text/html;charset=UTF-8" ); 或 这是代码 <?php $email = 'test@test.com'; $headers=array( 'From: "info@mysi

当我将$headers数组指定为

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

这是代码

 <?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);
?>


你能告诉我为什么会这样吗?如何解决此问题?

如果要通过数组发送
$headers
,则需要将
\r\n
添加到每个头值的末尾,并将数组转换为
字符串

您的代码应该是:

$headers = array(
    'From: <info@mysite.com>',
    'Content-Type:text/html;charset=UTF-8',
    'Reply-To: <info@mysite.com>'
);
$headers = implode("\r\n", $headers);
$headers=数组(
“发件人:”,
'内容类型:text/html;charset=UTF-8',
答复:
);
$headers=内爆(“\r\n,$headers”);

$headers
必须是字符串,而不是数组:

如果要将
$headers
保留为一个数组,也可以这样做

mail($email, "Call Back Requert Confirmation", $msg, 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"; 
或者使用数组使用
内爆()
转换字符串中的数组,并将其发送到
邮件()


将头作为字符串而不是数组发送HI,老实说,我没有尝试iTunes
join(“\r\n”,$headers)
。没有尝试什么?阅读文档?谢谢hardik,但是这段代码添加了“在电子邮件之前!地址不应该用引号括起来,它应该
。但是我得到的是”info@mysite.comstill我得到的答复是“info@mysite.com在电子邮件地址!在收到邮件时不显示,但在回复时显示!根据文档,由于PHP7.2,
mail
应该能够接受
$headers
参数的数组。
mail($email, "Call Back Requert Confirmation", $msg, 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"; 
$headers = implode("\r\n", $headers);
mail($email, "Call Back Requert Confirmation", $msg, $headers);