PHP警告:mail():找到数字标题
我使用以下脚本通过PHP发送电子邮件。但是,我在第16行的/home/…public\u html/../sendmail.PHP中发现错误PHP警告:mail():找到数字标题,php,email,Php,Email,我使用以下脚本通过PHP发送电子邮件。但是,我在第16行的/home/…public\u html/../sendmail.PHP中发现错误“PHP警告:mail():找到数字标题(4)请提供任何帮助 PHP脚本 <?php $name = @trim(stripslashes($_POST['name'])); $from = @trim(stripslashes($_POST['email'])); $subject = @trim(stripslas
“PHP警告:mail():找到数字标题(4)
请提供任何帮助
PHP脚本
<?php
$name = @trim(stripslashes($_POST['name']));
$from = @trim(stripslashes($_POST['email']));
$subject = @trim(stripslashes($_POST['subject']));
$message = @trim(stripslashes($_POST['message']));
$to = 'xxxxx@xmail.com';
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=UTF-8";
$headers[] = "From: {$name} <{$from}>";
$headers[] = "Reply-To: <{$from}>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();
mail($to, $subject, $message, $headers);
die;
如果要将头作为数组传递,则需要将头名称指定为数组键!(PHP文档:“如果传递了一个数组,它的键是头名称,它的值是相应的头值。”)
现在有两种解决方案
解决方案1(标题为字符串):
$headers=“MIME版本:1.0”;
$headers.=“内容类型:文本/普通;字符集=UTF-8”;
$headers.=“From:{$name}”;
$headers.=“回复:”;
$headers.=“主题:{$Subject}”;
$headers.=“X-Mailer:PHP/”.phpversion();
解决方案2(标题作为数组):
$headers=[
“MIME版本”=>“MIME版本:1.0”,
'内容类型'=>'文本/纯文本;字符集=UTF-8',
'来自'=>“{$name}”,
'回复'=>$from,
“主题”=>$Subject,
'X-Mailer'=>'PHP/'.phpversion(),
];
要检查mail()
是否有效,可以检查最后一个错误
例如:
$success=mail('example@example.com“,”我的主题“,$message);
如果(!$success){
$errorMessage=error_get_last()['message'];
}
顺便说一句,为了避免由于不符合RFC而导致接收电子邮件服务器出现任何问题,您应该使用类似SwiftMailer或PHPMailer的邮件类。然后查找并比较您拥有的邮件以及手册中显示的如何将邮件头用作数组的邮件。您将看到这是一个多么简单的修复。它说“7.2.0附加的_headers参数现在也接受一个数组。”我正按照手册中的建议使用PHP7.2和头。您没有按照手册使用它。查看示例5,您将看到您没有内爆()
。我已经尝试了您的解决方案,错误消失了。但是,我仍然没有收到任何电子邮件。你可以像我在帖子中添加的示例一样检查错误。然而,我真的建议使用我在回答中提到的mailer类!