2017-09-12 1 views
1

Je souhaite utiliser les fonctionnalités minimales de phpmailer. c'est ma structure de dossier:php - utilisation de l'espace de noms

webroot/ 
    - php/ 
    - mail.php 
    - phpmailer/ 
     - PHPMailer.php 

dans mon mail.php, je veux utiliser l'espace de noms:

<?php 
use PHPMailer\PHPMailer; 
$mail = new PHPMailer(true); 
... 

Mais je suis erreur:

Fatal error: Class 'PHPMailer\PHPMailer' not found in /home/example/public_html/php/mail.php on line 2

Comment puis-je résoudre ce problème?

+0

avez-vous essayé 'utiliser phpmailer \ PHPMailer;'? – Edwin

+0

namespace sont déclarés comme 'namespace nameOfSpace', l'utilisation va essayer d'importer une classe. – coderodour

+4

Et quoi? Avez-vous un autoloader ou comment incluez-vous les fichiers phpmailer? –

Répondre

0

Commencez à chercher dans le compositeur. Le compositeur vous aidera à utiliser un seul chargeur automatique.

Download: Composer

Mettre le compositeur dans le dossier php.

Jetez un oeil à THIS

OU mettre la classe à l'intérieur du projet php.

Vous devez tous ces:

require_once('class.pop3.php'); 
require_once('class.phpmailer.php'); 
require_once('class.smtp.php'); 
require_once('PHPMailerAutoload.php'); 

PHPMailer Github link

0

phpmailer ne semble pas être dans un espace de noms.

comprennent phpmailer/PHPMailerAutoload.php et l'utilisation \ PHPMailer:

<?php 
require 'phpmailer/PHPMailerAutoload.php' ; 
use \PHPMailer ; 
1
  1. Créer un fichier include.php.

    $LibraryPath = "/webroot/php"; 
        set_include_path(get_include_path() . PATH_SEPARATOR . $LibraryPath); 
    ?> 
    

* Où $ LibaryPath est le chemin de votre dossier php qui contient le dossier phpmailer

  1. Dans votre PhpMailer.php comprennent

    namespace phpmailer; 
    
        class PHPMailer(){ 
        ..... 
        } 
        ?> 
    
  2. Dans mail.php inclure le require afin que vous puissiez instancier phpmailer \ PHPMailer

    require ('include.php'); 
    
    use phpmailer\PHPMailer; 
    

Vous pouvez ajouter plus de classe dans le dossier php et vous pouvez définir leurs espaces de noms après # 2.

Vous pouvez les appeler dans de nouvelles pages en incluant 'include.php' et en instanciant la classe.