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

使用XAMMP发送邮件返回成功提示但实际未送达问题求助

问题分析与解决方案

PHP的mail()函数返回成功,仅代表邮件已被提交到本地邮件传输代理(MTA)队列,但XAMPP默认并未配置可用的外部SMTP服务器,导致邮件无法实际转发到目标收件邮箱,只会留在本地或被直接丢弃。

解决方案一:配置XAMPP的sendmail组件

以Gmail SMTP为例(需开启两步验证并创建应用密码,不能用普通登录密码):

  1. 打开XAMPP目录下的sendmail\sendmail.ini,修改以下配置:
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=tls
auth_username=你的Gmail邮箱地址
auth_password=你的Gmail应用密码
force_sender=你的Gmail邮箱地址
  1. 打开XAMPP目录下的php\php.ini,找到sendmail_path并修改:
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
  1. 重启XAMPP的Apache服务,重新测试邮件发送。

解决方案二:使用PHPMailer替代原生mail()函数(推荐)

原生mail()依赖服务器MTA配置,兼容性差;PHPMailer直接通过SMTP连接第三方邮箱服务,更稳定可靠。

  1. 下载PHPMailer源码,将src目录放到你的项目中。
  2. 替换原有代码为以下内容(已修正原代码中回复邮箱固定值的问题):
<?php
include ('config.php');
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

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

$first_name  = mysqli_real_escape_string($link, $_POST['first_name']);
$last_name   = mysqli_real_escape_string($link, $_POST['last_name']);
$email       = $_POST['email'];
$phone       = $_POST['phone'];
$comments    = mysqli_real_escape_string($link, $_POST['comments']);
$DateCreated = date('Y-m-d');

$mail = new PHPMailer(true);

try {
    // SMTP配置
    $mail->isSMTP();
    $mail->Host       = 'smtp.gmail.com';
    $mail->SMTPAuth   = true;
    $mail->Username   = '你的Gmail邮箱';
    $mail->Password   = '你的Gmail应用密码';
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port       = 587;

    // 收发件人设置
    $mail->setFrom('xxx@gmail.com', '网站联系人');
    $mail->addAddress('abc@gmail.com'); // 目标收件邮箱
    $mail->addReplyTo($email, "$first_name $last_name"); // 回复到用户提交的邮箱

    // 邮件内容
    $mail->isHTML(false); // 保持纯文本格式
    $mail->Subject = "You've been contacted by $first_name.";
    $e_body    = "You have been contacted by $first_name.\r\n\r\n";
    $e_content = "\"$comments\"\r\n\r\n";
    $e_reply   = "You can contact $first_name via email, $email or via phone $phone";
    $mail->Body = $e_body . $e_content . $e_reply;

    $mail->send();
    echo "<fieldset>";
    echo "<div id='success_page'>";
    echo "<h1>Email Sent Successfully.</h1>";
    echo "<p>Thank you <strong>$first_name</strong>, your message has been submitted to us.</p>";
    echo "</div>";
    echo "</fieldset>";
} catch (Exception $e) {
    echo "ERROR! 邮件发送失败: {$mail->ErrorInfo}";
}
?>

额外检查项

  • 检查收件邮箱的垃圾邮件文件夹,邮件可能被误判为垃圾邮件
  • 确认SMTP服务的端口、加密方式配置正确(不同邮箱服务商参数可能不同)
  • 若使用其他邮箱(如QQ邮箱、Outlook),需对应调整SMTP服务器地址、端口等参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:59:56