为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 警告: mail(): 找到数字标头

PHP 警告: mail(): 找到数字标头

PHP
芜湖不芜 2022-08-05 15:37:44
我正在使用以下脚本通过PHP发送电子邮件。但是,我得到错误请任何帮助。"PHP Warning:  mail(): Found numeric header (4) in /home/....public_html/.../sendemail.php on line 16"脚本<?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;
查看完整描述

1 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

如果要将标头作为数组传递,则需要将标头名称指定为数组键!(PHP文档:“如果传递了一个数组,它的键是标头名称,它的值是相应的标头值。


现在有 2 种解决方案。


解决方案 1(标头作为字符串):


$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();

解决方案 2(标头作为数组):


$headers   = [

    'MIME-Version' => 'MIME-Version: 1.0',

    'Content-type' => 'text/plain; charset=UTF-8',

    'From' => "{$name} <{$from}>",

    'Reply-To' => $from,

    'Subject' => $subject,

    'X-Mailer' => 'PHP/' . phpversion(),

];

要检查是否有效,您可以检查最后一个错误。mail()


例:


$success = mail('example@example.com', 'My Subject', $message);

if (!$success) {

    $errorMessage = error_get_last()['message'];

}

顺便说一句。为了避免由于不符合RFC而导致的接收电子邮件服务器的任何问题,您应该使用像SwiftMailer或PHPMailer这样的邮件类。


查看完整回答
反对 回复 2022-08-05
  • 1 回答
  • 0 关注
  • 81 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信