Arquivo PHPMailerAutoload.php não encontrado

Olá… Baixei a biblioteca PHPMailer do GitHub e segui o projeto do Livro… Porém, o arquivo PHPMailerAutoload.php não existe na biblioteca, dando erro na aplicação quando tenta executar:
Warning : include(bibliotecas/PHPMailer/PHPMailerAutoload.php): failed to open stream: No such file or directory in C:\xampp\htdocs\tarefas\ajudantes.php on line 97

Warning : include(): Failed opening ‘bibliotecas/PHPMailer/PHPMailerAutoload.php’ for inclusion (include_path=‘C:\xampp\php\PEAR’) in C:\xampp\htdocs\tarefas\ajudantes.php on line 97

Fatal error : Uncaught Error: Class ‘PHPMailer’ not found in C:\xampp\htdocs\tarefas\ajudantes.php:101 Stack trace: #0 C:\xampp\htdocs\tarefas\editar.php(56): enviar_email(Array, Array) #1 {main} thrown in C:\xampp\htdocs\tarefas\ajudantes.php on line 101

A estrutura de arquivos abaixo:
image

O arquivo bibliotecas/PHPMailer/src/PHPMailer.php contém a classe PHPMailer, mas ao instanciar o objeto, aparece um erro, informando que não encontrou o arquivo:
Fatal error : Uncaught Error: Class ‘bibliotecas\PHPmailer\src\PHPMailer’ not found in C:\xampp\htdocs\tarefas\ajudantes.php:101 Stack trace: #0 C:\xampp\htdocs\tarefas\editar.php(56): enviar_email(Array, Array) #1 {main} thrown in C:\xampp\htdocs\tarefas\ajudantes.php on line 101

Arquivo PHPMailer.php
image

Olá, @richard.ambrosio1.

Então, a biblioteca PHPMailer teve mudanças depois da versão 5.2.

Agora é recomendado usar o composer para carregar a biblioteca. No github tem um exemplo https://github.com/PHPMailer/PHPMailer#a-simple-example

É necessário carregar o autoload do composer para que o php encontre a biblioteca PHPMailer.

require 'vendor/autoload.php';

Abraços

Olá, fiz o procedimento, porém o erro continua o mesmo:

$ composer require phpmailer/phpmailer
Using version ^6.1 for phpmailer/phpmailer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
1 package you are using is looking for funding.
Use the composer fund command to find out more!

Foi baixado os arquivos, porém continua o mesmo erro:
Fatal error : Uncaught Error: Class ‘PHPMailer’ not found in C:\xampp\htdocs\tarefas\ajudantes.php:102 Stack trace: #0 C:\xampp\htdocs\tarefas\tarefas.php(52): enviar_email(Array) #1 {main} thrown in C:\xampp\htdocs\tarefas\ajudantes.php on line 102

Inseri o PHPMailer no diretório “bibliotecas”, por isso o require está diferente

Olá, @richard.ambrosio1.

Desculpe pela demora em responder. Eu preparei um exemplo aqui.

Esse é o composer.json:

{
    "require": {
        "phpmailer/phpmailer": "^6.1"
    }
}

Coloque esse arquivo em um diretório e rode composer install (assumindo que você tenha o composer instalado já).

Aí fiz esse aqruivo chamado run.php:

<?php

require __DIR__ . '/vendor/autoload.php';

use PHPMailer\PHPMailer\PHPMailer;

$mailer = new PHPMailer();

echo get_class($mailer);

Resultado:

PHPMailer\PHPMailer\PHPMailer

Funciona para você?

Deu certo sim!

Aproveitei e fiz algumas alterações também.

Muito obrigado

1 curtida