PHP Notice: Undefined variable: message报错修复求助,联系表单无法发件
联系表单邮件发送故障修复方案
问题现象
错误日志出现如下提示,表单无法发送任何邮件:
PHP Notice: Undefined variable: message in .../send-email.php on line 25
问题原因
代码第25行使用$message .= "Email from: " . $name . "<br />";拼接邮件内容时,$message变量未提前初始化。PHP要求变量必须先定义才能进行操作,未定义的变量直接执行拼接会触发Notice错误,同时导致邮件内容为空,最终发送失败。
修复后的完整代码
<?php // Replace this with your own email address $to = 'contact@mysite.co'; function url(){ return sprintf( "%s://%s", isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', $_SERVER['SERVER_NAME'] ); } if($_POST) { $name = trim(stripslashes($_POST['name'])); $email = trim(stripslashes($_POST['email'])); $subject = trim(stripslashes($_POST['subject'])); $contact_message = trim(stripslashes($_POST['message'])); if ($subject == '') { $subject = "Contact Form Submission"; } // 初始化message变量,解决未定义问题 $message = ''; // Set Message $message .= "Email from: " . $name . "<br />"; $message .= "Email address: " . $email . "<br />"; $message .= "Message: <br />"; $message .= nl2br($contact_message); $message .= "<br /> ----- <br /> This email was sent from your site " . url() . " contact form. <br />"; // Set From: header $from = $name . " <" . $email . ">"; // Email Headers $headers = "From: " . $from . "\r\n"; $headers .= "Reply-To: ". $email . "\r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; ini_set("sendmail_from", $to); // for windows server $mail = mail($to, $subject, $message, $headers); if ($mail) { echo "OK"; } else { echo "Something went wrong. Please try again."; } } ?>
关键修复点
在// Set Message注释上方添加$message = '';,初始化邮件内容变量,确保后续的字符串拼接操作有合法的变量基础。
内容的提问来源于stack exchange,提问作者Tiffani P
相关产品推荐
相关产品推荐

