1. ホーム
  2. php

[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?

2022-02-04 09:53:11

質問事項

私はプロジェクトに取り組んでいます。私は、ユーザーが電子メールとパスワードを入力した後、電子メールを送信する必要があります。彼らは、電子メールを送信することをクリックして、それらのアカウントを有効にすることができます。しかし、PHPMailerを使用する際にエラーが発生しました。エラーは次のようなものでした。

<ブロッククオート

致命的なエラーです。Uncaught Error: Class 'PHPMailer' not found in (クラス 'PHPMailer'が見つかりません) C:↘xampp↘htdocs↘E-Commerce-New-2↘registration.php:20 Stack trace: #0 {main} thrown in C:╱xampp╱E-Commerce-New-2╱registration.php on 20行目

PHPMailerの新しいバージョンでは、PHPMailerAutoload.phpファイルを使用しますか?答えはノーだと思います。

私は以下のコードを使用してみました。 $mail = new PHPMailer\PHPMailer(); また、次のコードもあります。 $mail = new PHPMailer(); まだ誰も働いていません。私のファイル構造は以下の通りです。

そして、ここに私のコードの行を貼り付けます。

<?php 
        session_start();
        include("includes/db.php");
        include("functions/functions.php");
        include('PHPMailer/PHPMailer.php');
    ?>
    <?php
        // If the values are posted, insert them into the database.
        if (isset($_POST['email']) && isset($_POST['password'])){
            $email = $_POST['email'];
            $password = $_POST['password'];

            $verification_key = md5($email);
            $query = "INSERT INTO `customers` (customer_pass,customer_email,verification_key) VALUES ('$password', '$email','$verification_key')";

            $result = mysqli_query($con, $query);
            if($result){

            $mail = new PHPMailer\PHPMailer();
            $mail->setFrom('[email protected]');
            $mail->addAddress($email,'test');
            $mail->Subject = "Verify Your Account";
            $mail->isHTML(true);
            $mail->Body   = ' Please verify your email address to activate your account by clicking on this link <br>
                <a href="http://localhost/E-Commerce-New-2/verify.php?key="'. $verification_key.'>Click Here</a>';

                if(!$mail->send()) {
                    $fmsg= 'Message could not be sent. Mailer Error: ' . $mail->ErrorInfo;
                } else {
                    $smsg = 'User Registration successfull. Please Check your email to Activate Account!';
                }
        }else{
            $fmsg = "User registration failed";
        }
       } 
    ?>

どなたかご意見をお聞かせください。

どのように解決するのですか?

新しい PHPMailer v6.0+ では、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';

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "mail.example.com";

$mail->SetFrom("$from", "$from");
$mail->AddAddress("$to");

$mail->Subject = "$subject";
$mail->Body = "$message";
$mail->Send();