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

PHPMailer配置异常:联系表单数据无法发送至Outlook邮箱

问题排查与修复方案

你的代码存在几个关键问题导致邮件无法送达,具体如下:

核心错误点

  • SMTP与Sendmail模式冲突:你先启用了SMTP模式($mail->IsSMTP();),随后又调用$mail->IsSendmail();强制切换到Sendmail模式,直接导致SMTP配置失效,必须删除$mail->IsSendmail();这一行。
  • 表单编码冗余:表单没有文件上传需求,却设置了enctype="multipart/form-data",会干扰PHP对POST数据的解析,建议移除该属性。
  • 错误信息缺失:当前仅提示"Mail Not Sent",无法获取具体失败原因,应使用$mail->ErrorInfo输出详细错误日志,便于排查。
  • PHPMailer依赖不全:旧版PHPMailer使用SMTP时需要同时引入class.smtp.php,否则会出现SMTP功能缺失问题,需确保该文件存在并正确引入。

修正后的完整代码

PHP部分

<?php
require 'PHPMailer/class.phpmailer.php';
require 'PHPMailer/class.smtp.php'; // 新增SMTP类引入

if(isset($_POST['submit'])){
    // 基础输入过滤,增强安全性
    $name = htmlspecialchars($_POST['name']);
    $email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
    $subject = htmlspecialchars($_POST['subject']);
    $phone = htmlspecialchars($_POST['phone']);
    $text = htmlspecialchars($_POST['text']);
    
    $body = "
      <h3>联系表单数据</h3><br>
      姓名 * = $name<br>
      邮箱 * = $email<br>
      主题 = $subject<br>
      电话 = $phone<br>
      留言 = $text<br>
    ";

    try {
        $mail = new PHPMailer(true);

        // SMTP核心配置
        $mail->isSMTP();
        $mail->SMTPAuth = true;
        $mail->Port = 587;
        $mail->Host = "smtp-mail.outlook.com";
        $mail->Username = "name@domain.co.uk"; // 替换为你的Outlook邮箱
        $mail->Password = "password"; // 替换为你的邮箱密码/应用密码
        $mail->SMTPSecure = 'tls';
        $mail->SMTPDebug = 2; // 开启详细调试,排查完成后改为0

        // 邮件内容配置
        $mail->setFrom("name@domain.co.uk", "联系表单");
        $mail->addAddress("name@domain.co.uk"); // 收件邮箱
        $mail->isHTML(true);
        $mail->Subject = "新的联系表单提交";
        $mail->Body = $body;
        $mail->AltBody = strip_tags($body);

        $mail->send();
        echo '<script>alert("感谢您的留言,我们会尽快回复您!");</script>';
    } catch (Exception $e) {
        echo "邮件发送失败: " . $mail->ErrorInfo;
    }
}
?>

HTML表单部分

<form action="contact.php" method="POST">
    <div class="row">
        <div class="col-sm-6 mb-5">
            <label class="form-label">
                你的姓名
                <span class="text-danger-alt">*</span>
            </label>
            <div class="input-group form">
                <input class="form-control" type="text" name="name" placeholder="请输入全名" required>
            </div>
        </div>
        <div class="col-sm-6 mb-5">
            <label class="form-label">
                你的邮箱
                <span class="text-danger-alt">*</span>
            </label>
            <div class="input-group form">
                <input class="form-control" type="email" name="email" placeholder="请输入邮箱" required>
            </div>
        </div>
        <div class="col-sm-6 mb-5">
            <label class="form-label">
                留言主题
            </label>
            <div class="input-group form">
                <input class="form-control" type="text" name="subject" placeholder="请输入主题">
            </div>
        </div>
        <div class="col-sm-6 mb-5">
            <label class="form-label">
                你的电话
            </label>
            <div class="input-group form">
                <input class="form-control" type="text" name="phone" placeholder="请输入电话">
            </div>
        </div>
        <div class="col-12">
            <label class="form-label">
                留言内容
                <span class="text-danger-alt">*</span>
            </label>
            <div class="input-group form mb-5">
                <textarea class="form-control" rows="6" name="text" placeholder="请输入留言内容" required></textarea>
            </div>
        </div>
        <div class="col">
            <div class="text-center">
                <button type="submit" name="submit" class="btn btn-primary btn-wide">发送留言</button>
            </div>
        </div>
    </div>
</form>

额外注意事项

  • 若Outlook账号开启了两步验证,需使用应用密码代替普通密码登录SMTP。
  • 确保服务器的587端口未被防火墙封禁。
  • 调试完成后将SMTPDebug设置为0,避免向用户暴露敏感调试信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 14:40:57