【问题标题】:FatalError with PHPMailerPHPMailer 的致命错误
【发布时间】:2021-10-23 08:25:41
【问题描述】:

我正在尝试使用 PHPMailer 通过 gmail SMTP 服务器发送邮件,但出现致命错误,我找不到任何解决方案

我的 php 文件

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require "phpmailer/PHPMailer.php";
require "phpmailer/SMTP.php";
require "phpmailer/Exception.php";

$error_msg=null;
$success_msg=null;

if ($_POST) {
    //$name = isset($_POST['name']) ? filter_var($_POST['name'], FILTER_SANITIZE_STRING) : null;
    //$email = isset($_POST['email']) ? filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) : null;
    //$message = htmlspecialchars($_POST['message']);

    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];

    if (empty($name) || empty($email) || empty($message)) {
        $error_msg = 'Fill out required entry fields!';
    }

    if (is_null($error_msg)) {

        $mail = new PHPMailer(TRUE);

        $mail->isSMTP();
        $mail->Host = "smtp.gmail.com";
        $mail->SMTPAuth = true;
        $mail->Username = "mail@gmail.com";
        $mail->Password = "";
        $mail->SMTPSecure = "tls";
        $mail->Port = 587;

        $mail->isHTML(true);
        $mail->setFrom($email, $name);
        $mail->addAddress("mail@gmail.com");
        $mail->Subject = "Nowa wiadomość z formularza kontaktowego";
        $mail->Body = $message;

        $mail->send();

        $success_msg = "Message sent.";
    }
}
?>

html表单

<div class="h-100 d-flex justify-content-center align-items-center">
    <div class="row">
        <div class="col-md-12 rounded">
            <?php echo $lang['contact_desc']?>

            <?php if ($error_msg) : ?>
                <div class="alert alert-danger"><?php echo $error_msg; ?></div>
            <?php endif; ?>

            <?php if ($success_msg) : ?>
                <div class="alert alert-success"><?php echo $success_msg; ?></div>
            <?php endif; ?>
            <form id="myform" method="post">
                <label for="name"><?php echo $lang['name']?></label>
                <input type="text" name="name" id="name" placeholder="<?php echo $lang['name']?>" required>

                <label for="email">Email</label>
                <input type="email" name="email" id="email" placeholder="example@example.com" required>

                <label for="message"><?php echo $lang['message']?></label>
                <textarea name="message" id="message" placeholder="<?php echo $lang['msg_content']?>" required></textarea>

                <input type="submit" name="submit" value="<?php echo $lang['submit']?>">
            </form>
        </div>
    </div>
</div>

我得到的错误:

致命错误:未捕获的错误:C:\xampp\htdocs\phpmailer\PHPMailer.php:3598 中的未定义常量 PHPMailer\PHPMailer\FILTER_FLAG_HOST_REQUIRED" 堆栈跟踪:#0 C:\xampp\htdocs\phpmailer\PHPMailer.php( 3564): PHPMailer\PHPMailer\PHPMailer::isValidHost('localhost') #1 C:\xampp\htdocs\phpmailer\PHPMailer.php(2304): PHPMailer\PHPMailer\PHPMailer->serverHostname() #2 C:\xampp \htdocs\phpmailer\PHPMailer.php(1421): PHPMailer\PHPMailer\PHPMailer->createHeader() #3 C:\xampp\htdocs\phpmailer\PHPMailer.php(1316): PHPMailer\PHPMailer\PHPMailer->preSend() #4 C:\xampp\htdocs\scripts\form.php(43): PHPMailer\PHPMailer\PHPMailer->send() #5 C:\xampp\htdocs\contact.php(3): include('C:\ xampp\htdocs...') #6 {main} 在第 3598 行的 C:\xampp\htdocs\phpmailer\PHPMailer.php 中抛出

有什么想法吗?

【问题讨论】:

    标签: php smtp phpmailer fatal-error


    【解决方案1】:

    FILTER_FLAG_HOST_REQUIREDfilter flag 在 PHP 7.3 中已被弃用,并且在 PHPMailer 代码库中不再有任何对它的引用。所以一个简单的修复应该是简单地更新 PHPMailer。如果您使用 composer,这将是自动的并且非常简单,但您不是,因此您必须下载最新版本并按照自述文件自行安装。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 2020-11-09
      • 2017-05-26
      • 2020-10-02
      • 2021-05-16
      相关资源
      最近更新 更多