PHP新手编写联系表单邮件功能出现unexpected 'mail'语法错误求助
问题根因与修复方案
1 直接触发语法报错的原因
- 第21行调用mail函数时多写了等号,错误写为
mail=($to,$subject,$message, $header);,mail是PHP内置函数,不需要加等号赋值,直接调用即可 - 上一行定义$header的代码结尾缺少分号,导致PHP将两行代码识别为同一段逻辑,触发语法解析错误
2 其他隐藏的逻辑错误
- 变量名不匹配:你提前将用户提交的邮箱赋值给了
$from变量,但在Header中写的是未定义的$email变量 - 单引号无法解析变量与转义符:Header部分你用了单引号包裹内容,里面的
{$email}和\r\n都会原样输出不会生效,需要改为双引号 - PHP结束标签书写错误:你写的是
>?,正确格式为?> - $subject重复赋值:你最开始定义了固定的邮件主题,后续又被用户提交的subject字段覆盖,若需要固定主题请修改后续变量名
修正后的完整代码
<?php if (isset($_POST['submit'])){ $to = 'w.anjanadep@gmail.com'; // 固定的邮件主题 $fixed_subject = "Message from Astaqua.com"; $from = $_POST['email']; $name = $_POST['name']; $user_subject = $_POST['subject']; $phone = $_POST['Phone']; // 拼接邮件内容 $message = 'name:'.$_POST['name'].'<br>'. 'subject:'.$user_subject.'<br>'. 'Phone:'.$_POST['Phone'].'<br>'. 'message:'.$_POST['message']; // 修正header的引号、变量、分号问题 $header = "From:{$from}\r\n". "Cc:astaquag@gmail.com\r\n". "Content-Type:text/html;charset=utf-8"; // 去掉等号直接调用mail函数 $send_result = mail($to, $fixed_subject, $message, $header); if($send_result){ echo "邮件发送成功"; }else{ echo "邮件发送失败,请检查服务器SMTP配置"; } } ?>
内容的提问来源于stack exchange,提问作者Anjana Dep
相关产品推荐
相关产品推荐

