为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 致命错误:require(): 需要打开失败 'vendor/phpmailer/

PHP 致命错误:require(): 需要打开失败 'vendor/phpmailer/

PHP
蝴蝶不菲 2023-05-26 14:19:24
下面是我的 php 代码。我是第一次使用 gcp 应用程序引擎,它抛出错误 PHP Fatal error: require(): Failed opening required 'vendor/phpmailer/phpmailer/src/Exception.php'。我已经在提到的目录中有这个文件,然后它也显示这个错误。是关于新的 phpmailer 格式还是其他什么?请帮忙。<!DOCTYPE html><html>  <head>  <meta content="text/html;charset=utf-8" http-equiv="Content-Type"></head><?php  use PHPMailer\PHPMailer\PHPMailer;  use PHPMailer\PHPMailer\Exception;  use PHPMailer\PHPMailer\SMTP;  require 'vendor/phpmailer/phpmailer/src/Exception.php';  require 'vendor/phpmailer/phpmailer/src/PHPMailer.php';  require 'vendor/phpmailer/phpmailer/src/SMTP.php';  // Include autoload.php file  require 'vendor/autoload.php';  // Create object of PHPMailer class  $mail = new PHPMailer(true);  $output = '';  if (isset($_POST['submit'])) {    $name = $_POST['contactName'];    $email = $_POST['contactEmail'];    $subject = $_POST['contactSubject'];    $message = $_POST['contactMessage'];    try {      $mail->isSMTP();      $mail->Host = 'smtp.gmail.com';      $mail->SMTPAuth = true;      // Gmail ID which you want to use as SMTP server      $mail->Username = 'rajeshsingh80906@gmail.com';      // Gmail Password      $mail->Password = 'secret';      $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;      $mail->Port = 587;      // Email ID from which you want to send the email      $mail->setFrom('rajeshsingh80906@gmail.com');      // Recipient Email ID where you want to receive emails      $mail->addAddress('ranarajesh495@gmail.com');      // $mail->addAttachment('');       $mail->isHTML(true);      $mail->Subject = 'Form Submission';      $mail->Body = "<h3>Name : $name <br>Email : $email <br>Message : $message</h3>";      $mail->send();      $output = '<div class="alert alert-success">                  <h5>Thankyou! for contacting us, We\'ll get back to you soon!</h5>                </div>';    } catch (Exception $e) {      $output = '<div class="alert alert-danger">                  <h5>' . $e->getMessage() . '</h5>                </div>';    }  }
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

如果我是正确的,您需要在使用“use”语句之前导入文件,如下所示:


<?php

  require 'vendor/phpmailer/phpmailer/src/Exception.php';

  require 'vendor/phpmailer/phpmailer/src/PHPMailer.php';

  require 'vendor/phpmailer/phpmailer/src/SMTP.php';

  use PHPMailer\PHPMailer\PHPMailer;

  use PHPMailer\PHPMailer\Exception;

  use PHPMailer\PHPMailer\SMTP;


查看完整回答
反对 回复 2023-05-26
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

如果您通过 composer 安装 PHPMailer,我认为您不需要这个,所以我已从您的代码中删除了这部分。


require 'vendor/phpmailer/phpmailer/src/Exception.php';

require 'vendor/phpmailer/phpmailer/src/PHPMailer.php';

require 'vendor/phpmailer/phpmailer/src/SMTP.php';

试试下面的代码。我已经重新格式化了你的代码。


<?php

use PHPMailer\PHPMailer\PHPMailer;

use PHPMailer\PHPMailer\Exception;

use PHPMailer\PHPMailer\SMTP;


// Include Composer autoload.php file

require 'vendor/autoload.php';


// Create object of PHPMailer class

$mail = new PHPMailer(true);


$output = '';


if (isset($_POST['submit'])) {

    $name = $_POST['contactName'];

    $email = $_POST['contactEmail'];

    $subject = $_POST['contactSubject'];

    $message = $_POST['contactMessage'];


    try {

        $mail->isSMTP();

        $mail->Host = 'smtp.gmail.com';

        $mail->SMTPAuth = true;

        // Gmail ID which you want to use as SMTP server

        $mail->Username = 'rajeshsingh80906@gmail.com';

        // Gmail Password

        $mail->Password = 'secret';

        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;

        $mail->Port = 587;


        // Email ID from which you want to send the email

        $mail->setFrom('rajeshsingh80906@gmail.com');

        // Recipient Email ID where you want to receive emails

        $mail->addAddress('ranarajesh495@gmail.com');

        // $mail->addAttachment(''); 

        $mail->isHTML(true);

        $mail->Subject = 'Form Submission';

        $mail->Body = "<h3>Name : $name <br>Email : $email <br>Message : $message</h3>";


        $mail->send();

        $output = '<div class="alert alert-success"><h5>Thankyou! for contacting us, We\'ll get back to you soon!</h5></div>';

    }

    catch (Exception $e) {

        $output = '<div class="alert alert-danger"><h5>' . $e->getMessage() . '</h5></div>';

    }

}

?>

<!DOCTYPE html>

<html>

<head>

    <meta content="text/html;charset=utf-8" http-equiv="Content-Type">

    <title>insert page</title>

    <script type="text/javascript">

        function back_to_main() {

            setTimeout(function () {

                //Redirect with JavaScript

                window.location = './index.html'

            }, 5000);

        }

    </script>

</head>

<body onload='back_to_main();'>

  thank you...

</body>

</html>

请注意我没有测试上面的代码。

查看完整回答
反对 回复 2023-05-26
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

如果您使用的是 linux 并且在没有作曲家的情况下下载它,请授予 PHPMailer 文件夹的权限。

sudo chmod -R 777 youphpmailerfolder

在我的例子中,我将文件夹作为 PHPMailer 放在我的根项目中名为 config 的文件夹中。所以,我所做的是从项目中输入我的文件夹配置并运行:

sudo chmod -R 777 PHPMailer

我希望这有帮助!


查看完整回答
反对 回复 2023-05-26
  • 3 回答
  • 0 关注
  • 433 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信