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

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

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

PHP
弑天下 2022-07-22 17:01:34
我正在使用以下脚本通过 PHP 发送电子邮件。但是,我收到错误"PHP Warning:  mail(): Found numeric header (4) in /home/....public_html/.../sendemail.php on line 16"请提供任何帮助。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;
查看完整描述

1 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

如果要将标头作为数组传递,则需要将标头名称指定为数组键!(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-07-22
  • 1 回答
  • 0 关注
  • 93 浏览

添加回答

举报

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