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

我正在使用以下脚本通过 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;


弑天下
浏览 94回答 1
1回答

慕无忌1623718

如果要将标头作为数组传递,则需要将标头名称指定为数组键!(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&nbsp; &nbsp;= [&nbsp; &nbsp; 'MIME-Version' => 'MIME-Version: 1.0',&nbsp; &nbsp; 'Content-type' => 'text/plain; charset=UTF-8',&nbsp; &nbsp; 'From' => "{$name} <{$from}>",&nbsp; &nbsp; 'Reply-To' => $from,&nbsp; &nbsp; 'Subject' => $subject,&nbsp; &nbsp; 'X-Mailer' => 'PHP/' . phpversion(),];要检查是否mail()有效,您可以检查最后一个错误。例子:$success = mail('example@example.com', 'My Subject', $message);if (!$success) {&nbsp; &nbsp; $errorMessage = error_get_last()['message'];}顺便说一句。为避免由于不符合 RFC 导致接收电子邮件服务器出现任何问题,您应该使用邮件程序类,如 SwiftMailer 或 PHPMailer。
打开App,查看更多内容
随时随地看视频慕课网APP