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

PHP实现的联系我邮件表单发信失败及谷歌企业邮箱SMTP配置咨询

问题解决方法

问题根源

你当前使用PHP原生mail()函数发送邮件,该函数依赖服务器端预装的邮件传输服务,绝大多数虚拟主机/云服务器默认未配置对应服务,因此直接调用必然返回失败。我们改用SMTP协议通过谷歌企业邮箱发送邮件即可解决问题。

第一步:谷歌企业邮箱前置配置

  • 登录你的谷歌企业邮箱账号,先开启账号的两步验证功能
  • 进入账号「安全」设置页,找到「应用专用密码」选项,生成一个专用密码(注意保存,后续代码中要使用该密码,请勿直接使用邮箱登录主密码)
  • 如果你是企业管理员账号,需前往Google Workspace管理后台,确认未限制该账号的SMTP发信权限

第二步:后端代码适配

我们使用业界通用的PHPMailer库完成SMTP发信,你可以通过Composer安装,也可以直接下载PHPMailer源码引入到项目中。
修改你的process-form.php代码如下:

<?php
// 引入PHPMailer的核心文件,路径根据你实际存放位置修改
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';

if (isset($_REQUEST['name'], $_REQUEST['email'], $_REQUEST['comment'])) {
    $name = $_REQUEST['name'];
    $user_email = $_REQUEST['email'];
    $message = $_REQUEST['comment'];
    $to = 'redacted@for.privacy'; // 你的收信邮箱
    $subject = 'Contact From My Website';

    $mail = new PHPMailer(true);
    try {
        // SMTP配置
        $mail->isSMTP();
        $mail->Host = 'smtp.gmail.com'; // 谷歌SMTP服务器地址
        $mail->SMTPAuth = true;
        $mail->Username = '你的谷歌企业邮箱地址'; // 比如xxx@yourdomain.com
        $mail->Password = '你刚才生成的应用专用密码';
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
        $mail->Port = 465; // SSL端口,也可以用587对应ENCRYPTION_STARTTLS

        // 发件人设置,必须使用你自己的谷歌企业邮箱,谷歌会拦截自定义发件人
        $mail->setFrom('你的谷歌企业邮箱地址', '网站联系表单');
        $mail->addAddress($to); // 收信人
        $mail->addReplyTo($user_email, $name); // 回复时直接回复用户填写的邮箱

        // 邮件内容
        $mail->Subject = $subject;
        $mail->Body = "发件人姓名:{$name}\n发件人邮箱:{$user_email}\n留言内容:\n{$message}";

        $mail->send();
        echo 'success';
    } catch (Exception $e) {
        // 调试时可以打开下面的代码查看具体错误信息:echo $mail->ErrorInfo;
        echo 'error';
    }
}
?>

其他注意事项

  • 你的前端表单代码、AJAX提交代码逻辑无需修改,可直接沿用
  • 不要将谷歌企业邮箱地址、应用专用密码直接提交到公共代码仓库,建议通过环境变量读取敏感信息
  • 如果发信仍失败,请联系你的服务器运营商确认465/587端口未被封禁
  • 发信测试时不要用相同内容重复提交多次,避免被谷歌判定为垃圾邮件触发发信限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:24:03