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

如何连接HTML消息发送表单与PHP 实现表单消息直达Gmail邮箱

联系表单对接PHP发信到Gmail实现方案

你的现有HTML表单已经正确配置了action="action.php"和method="post",只需要少量调整表单字段、编写对应的PHP后端处理逻辑即可实现需求,具体步骤如下:

1. 调整表单字段的不规范配置

你现有表单的部分name属性存在语义不清、带空格的问题,会提升后端参数解析的出错概率,建议做如下修改:

  • 姓名输入框的name="text"修改为name="fullname",语义明确便于后端接收
  • 提交按钮的name="send message"修改为name="submit_msg",去掉属性值里的空格,兼容所有服务器环境
    其余表单代码不需要改动。

2. 后端action.php实现逻辑

注意:PHP原生自带的mail()函数直接发信到Gmail的成功率极低,绝大多数情况会被Gmail反垃圾系统拦截,推荐使用SMTP协议配合Gmail应用专用密码发信,稳定性可达99%以上。

前置准备

  • 给你的Gmail账号开启两步验证,在账号安全设置里生成16位长度的应用专用密码,这个密码仅用于SMTP发信,不会泄露你的主账号密码
  • 将PHPMailer核心库文件上传到网站根目录,无需额外安装其他服务

不要在代码里硬编码Gmail主账号登录密码,必须使用应用专用密码,避免账号泄露风险。

完整代码

<?php
// 拦截非POST方式的访问
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    exit("非法访问");
}

// 引入PHPMailer核心文件
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';

// 接收并过滤表单提交的参数
$fullname = trim(strip_tags($_POST['fullname']));
$user_email = trim(strip_tags($_POST['email']));
$msg_content = trim(strip_tags($_POST['message']));

// 基础参数校验
if (empty($fullname) || empty($user_email) || empty($msg_content)) {
    exit("<script>alert('请填写所有必填字段');history.back();</script>");
}
if (!filter_var($user_email, FILTER_VALIDATE_EMAIL)) {
    exit("<script>alert('请输入有效的邮箱地址');history.back();</script>");
}

$mail = new PHPMailer(true);
try {
    // SMTP连接配置
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->Username = '替换为你自己的Gmail地址@gmail.com';
    $mail->Password = '替换为你生成的16位Gmail应用专用密码';
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port = 587;
    $mail->CharSet = 'UTF-8';

    // 收发件人配置
    $mail->setFrom('替换为你自己的Gmail地址@gmail.com', '网站联系表单');
    $mail->addAddress('替换为你自己的Gmail地址@gmail.com'); // 收件箱为你自己的Gmail
    $mail->addReplyTo($user_email, $fullname); // 配置回复地址为访客填写的邮箱,直接点回复即可给访客回信

    // 邮件内容配置
    $mail->isHTML(false); // 纯文本格式发信,降低被判定为垃圾邮件的概率
    $mail->Subject = "网站新联系消息 - 来自".$fullname;
    $mail->Body = "你收到一条来自网站联系表单的新消息:\n".
                  "访客姓名:".$fullname."\n".
                  "访客邮箱:".$user_email."\n".
                  "消息内容:\n".$msg_content;

    $mail->send();
    echo "<script>alert('消息发送成功,我们会尽快与你联系');history.back();</script>";
} catch (Exception $e) {
    echo "<script>alert('消息发送失败,请稍后重试');history.back();</script>";
}
?>

3. 上线前注意事项

  • 网站必须部署支持HTTPS的服务器环境,Gmail SMTP服务会拒绝非加密来源的发信请求
  • 建议给表单增加一层简单的图形验证码或人机验证,避免被爬虫批量提交垃圾消息
  • 首次测试发信如果没在收件箱找到邮件,先检查Gmail的垃圾邮件文件夹,确认没有被拦截后再正式上线
  • 不推荐使用Gmail API方式发信,配置流程比SMTP复杂3倍以上,普通企业站、个人站用SMTP方案完全足够

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:57:19