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

新手求助:网站联系表单无法发送邮件问题排查

修复PHP联系表单无法发送邮件的问题

一、HTML表单核心错误修复

你的表单控件缺少**name属性**(PHP通过name而非id获取提交值),且输入框type设置错误,以下是修正后的代码:

<div class="col-md-6">
  <form id="fcf-form-id" class="fcf-form-class" method="post" action="php/form-control.php">
    <div class="row">
      <div class="form-group col-md-6">
        <label for="Name">Twoje imię</label>
        <input type="text" class="form-control" id="Name" name="Name">
      </div>
      <div class="form-group col-md-6">
        <label for="Email">Twój email</label>
        <input type="email" class="form-control" id="Email" name="Email">
      </div>
      <div class="form-group col-md-12">
        <label for="Phone">Twój telefon</label>
        <input type="tel" class="form-control" id="Phone" name="Phone">
      </div>
    </div>
    <div class="form-group">
      <label for="Message">Wiadomość</label>
      <textarea class="form-control" id="Message" name="Message" rows="3"></textarea>
    </div>
    <button type="submit" class="btn font-weight-bold atlas-cta atlas-cta-wide cta-green my-3">Wyślij</button>
  </form>
</div>

修正点:

  • 给所有输入/文本框添加name属性,和PHP中$_POST的键对应
  • 修正姓名输入的type为text,电话输入的type为tel,邮箱输入的label与逻辑匹配

二、PHP代码错误修复

你的代码存在邮箱验证正则错误、错误屏蔽、邮件头格式问题,以下是修正后的代码:

<?php
if (isset($_POST['Email'])) {
 
    $email_to = "你的邮箱地址@gmail.com"; // 替换为实际接收邮箱
    $email_subject = "Automedyk - Wiadomość z formularza";
 
    function problem($error)
    {
        echo "Przykro nam ale wystąpił błąd. ";
        echo "<br><br>";
        echo $error . "<br><br>";
        echo "Prosimy o powrót i poprawę błędów.<br><br>";
        die();
    }
 
    // 验证必填字段是否存在
    if (
        !isset($_POST['Name']) ||
        !isset($_POST['Email']) ||
        !isset($_POST['Message'])
    ) {
        problem('Przykro nam ale wystąpił błąd.');
    }
 
    $name = trim($_POST['Name']);
    $email = trim($_POST['Email']);
    $message = trim($_POST['Message']);
    $phone = isset($_POST['Phone']) ? trim($_POST['Phone']) : '';
 
    $error_message = "";
    // 正确的邮箱格式验证正则
    $email_exp = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/";
 
    if (!preg_match($email_exp, $email)) {
        $error_message .= 'Nieprawidłowy adres email.<br>';
    }
 
    $string_exp = "/^[A-Za-z .'-]+$/";
    if (!preg_match($string_exp, $name)) {
        $error_message .= 'Nieprawidłowe imię.<br>';
    }
 
    if (strlen($message) < 2) {
        $error_message .= 'Nieprawidłowa treść wiadomości.<br>';
    }
 
    if (strlen($error_message) > 0) {
        problem($error_message);
    }
 
    $email_message = "Form details below.\n\n";
 
    function clean_string($string)
    {
        $bad = array("content-type", "bcc:", "to:", "cc:", "href");
        return str_replace($bad, "", $string);
    }
 
    $email_message .= "Name: " . clean_string($name) . "\n";
    $email_message .= "Email: " . clean_string($email) . "\n";
    if (!empty($phone)) {
        $email_message .= "Phone: " . clean_string($phone) . "\n";
    }
    $email_message .= "Message: " . clean_string($message) . "\n";
 
    // 使用标准\r\n作为邮件头换行符
    $headers = 'From: ' . $email . "\r\n" .
        'Reply-To: ' . $email . "\r\n" .
        'X-Mailer: PHP/' . phpversion();
    
    // 移除@符号,显示发送错误详情
    $mail_sent = mail($email_to, $email_subject, $email_message, $headers);
    
    if (!$mail_sent) {
        problem('Wystąpił błąd podczas wysyłania wiadomości. Błąd: ' . error_get_last()['message']);
    }
?>

  Dziękujemy za wiadomość, skontaktujemy się niebawem!

  <?php
} else {
    // 防止直接访问PHP文件
    echo "Prosimy użyć formularza kontaktowego.";
}
?>

修正点:

  • 替换了无效的邮箱验证正则,匹配标准邮箱格式
  • 移除@mail()中的@,显示发送错误信息便于调试
  • 修正邮件头换行符为\r\n,兼容不同服务器
  • 添加电话字段的处理逻辑(可选)

三、服务器环境注意事项

  1. 本地开发环境(XAMPP/WAMP等):
    默认无邮件服务器配置,mail()函数无法工作。推荐使用PHPMailer库通过SMTP发送(如Gmail、Outlook的SMTP服务)。
  2. 线上服务器:
    部分主机商会限制mail()函数,或要求发件人地址与服务器域名匹配。若仍无法发送,优先使用PHPMailer/SwiftMailer这类专业邮件库,它们更稳定且支持SMTP,避免服务器配置问题。

内容的提问来源于stack exchange,提问作者n0izeone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:30:57