Eine Klasse wird nicht mit New erstellt.
New erstellt ein Objekt einer klasse.
Das Ergebnis von class_exists ist lediglich davon abhängig, ob der code, der die Klasse implementiert, bereits geladen wurde und gibt Auskunft darüber, ob du denn mittels New ein entsprechendes Objekt dieser Klasse erstellen könntest.
spi autoloader werden dabei mit der Standardeinstellung berücksichtigt und es wird automatisch versucht, die klasse zu laden, sofern noch nicht geschehen.
In deinem letzten Post widersprichst du dir allerdings ein wenig selbst:
E-Mail senden scheint zu funktionieren
vs.
Gmail-Server produziert ein timeout
was denn nun?
Weiterhin ist es eher unwahrscheinlich, dass der Gmail-Server ein timeout produziert. Vermutlich meinst du, dass dein Script den Gmail-Server gar nicht erst erreicht, und deswegen mit einem timout "aufgibt".
Was sind denn deine nicht funktionierenden Einstellungen?
PHPMail - Fatal error: Uncaught Error: Class not found
Einklappen
X
-
E-Mail senden scheint so weit zu funktionieren. Nur der Gmail-Server produziert ein timeout. Hat jemand da Einstellungen, die bei ihm funktioniert haben?
Einen Kommentar schreiben:
-
Bin doch noch nicht durch mit dem Fehler.
Wichtiges Zwischenergebnis:
Die Funktion
class_exists('phpmailer')
gibt FALSE aus, auch wenn die Klasse phpmailer zuvor erfolgreich mit NEW erstellt wurde.
Einen Kommentar schreiben:
-
Fehler gefunden, es muss im Code heißen;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
Der Befehl use ist für mich neu und ich hatte beim "Probieren" der Problemlösung den Pfad irgendwann dem realen Pfad angepasst. Warum es damit nicht lief ist mir ein Rätsel.
Einen Kommentar schreiben:
-
Composer hat tatsächlich das Verzeichnis vendor eingerichtet. Darin liegen die Ordner phpmailer und composer sowie die Datei autoload.php
Ich vermute, dass das Problem im Bereich namespace in anderen Dateien und/oder use liegt.
1 Bild
Einen Kommentar schreiben:
-
Tja, das passiert, wenn man einfach irgendeinen Quellcode kopiert ohne diesen zu verstehen.
Ich glaube nicht, dass du das Verzeichnis vendor hast, oder?
Einen Kommentar schreiben:
-
PHPMail - Fatal error: Uncaught Error: Class not found
Folgende Fehlermeldung beim Versuch, PHPMail zu starten:
"Fatal error: Uncaught Error: Class "vendor\phpMailer\phpmailer\src\phpmailer" not found in C:\xampp\htdocs\m2work\phpmailer_test.php on line 69"
Obwohl die Klasse da ist, mit
if (!class_exists('phpmailer'))
überprüft und bestätigt.
Versuch auf XAMPP. Hat jemand eine Idee?
Hier der obere Teil auf des Codes:
<?php
// include_path=" ";
require 'vendor/autoload.php';
use vendor\phpMailer\phpmailer\src\phpmailer;
use vendor\phpMailer\phpmailer\src\SMTP;
use vendor\phpmailer\phpmailer\src\Exception;
if (!class_exists('phpmailer'))
{
echo
'Klasse existiert -FALSE !class_exists(_phpmailer_) <br>';
require_once 'C:/xampp/htdocs/vendor/phpmailer/phpmailer/src/phpmailer.php';
} else echo
'Klasse existiert -TRUE !class_exists(_phpmailer_) <br>';
// ================================================== ===============
// Jetzt noch ein Test, ob die Klasse schon eingebunden ist:
if (!class_exists('phpmailer'))
{
echo
'Klasse phpmailer existiert -FALSE <br>';
} else echo
'Klasse phpmailer existiert -TRUE <br>'; // Diese Meldung wird ausgegeben!
// ================================================== ===============
// Klasse PHPMailer aufrufen:
try {
// Versuch, eine neue Instanz der Klasse PHPMailer zu erstellen, wobei Ausnahmen aktiviert sind
$mail = new PHPMailer (true); // <=== HIER FEHLERMELDUNG, dass er die Class nicht findet!
// (…)
} catch (Exception $e) {
echo "Mailer Error: ".$e->getMessage();
}
Ich erhalte wie oben gesagt im Browser:
Fatal error: Uncaught Error: Class "vendor\phpMailer\phpmailer\src\phpmailer" not found in C:\xampp\htdocs\m2work\phpmailer_test.php on line 67
Hat jemand eine Idee?
Grüße! LennoStichworte: -
Einen Kommentar schreiben: