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:
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
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