You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:06:04