include_once('C:\Inetpub\wwwroot\php\PHPMailer\PHPMailerAutoload.php');
Erreur fatale: la classe 'PHPMailer' est introuvable dans C:\Inetpub\wwwroot\php\index.php à la ligne 151
Je place le PHPMailerAutoload.php
dans le même répertoire que mon script.
Quelqu'un peut il m'aider avec ça ?
toutes les réponses sont obsolètes maintenant. La version la plus récente (à partir de février 2018) n'a plus de chargement automatique, et PHPMailer devrait être initialisé comme suit:
<?php
require("/home/site/libs/PHPMailer-master/src/PHPMailer.php");
require("/home/site/libs/PHPMailer-master/src/SMTP.php");
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "xxxxxx";
$mail->Password = "xxxx";
$mail->SetFrom("[email protected]");
$mail->Subject = "Test";
$mail->Body = "hello";
$mail->AddAddress("[email protected]");
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
?>
Ne semble pas que tous les fichiers nécessaires pour utiliser cette classe sont présents. Je recommencerais:
require_once('phpmailer/PHPMailerAutoload.php');
Ceci répond dans une extension à ce que avs099 a donné ci-dessus, pour ceux qui ont toujours des problèmes:
1. Assurez-vous que php_openssl.dll est installé (sinon, trouvez-le en ligne et installez-le);
2.Allez sur votre php.ini; find extension = php_openssl.dll l'activer/ne pas commenter
3.Allez vers github et avalez la version la plus récente: 6.0 pour le moment.
4. Extrayez la copie principale dans le chemin qui vous convient le mieux (je recommande le même répertoire que le fichier appelant)
Maintenant, copiez ce code dans votre foo-mailer . Php et restituez-le avec vos authentifications gmail stmp.
require("/PHPMailer-master/src/PHPMailer.php");
require("/PHPMailer-master/src/SMTP.php");
require("/PHPMailer-master/src/Exception.php");
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->IsSMTP();
$mail->CharSet="UTF-8";
$mail->Host = "smtp.gmail.com";
$mail->SMTPDebug = 1;
$mail->Port = 465 ; //465 or 587
$mail->SMTPSecure = 'ssl';
$mail->SMTPAuth = true;
$mail->IsHTML(true);
//Authentication
$mail->Username = "[email protected]";
$mail->Password = "*******";
//Set Params
$mail->SetFrom("[email protected]");
$mail->AddAddress("[email protected]");
$mail->Subject = "Test";
$mail->Body = "hello";
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
Disclaimer: Le propriétaire original du code ci-dessus est avs099 avec juste ma petite entrée.
Prenez note de la supplémentaire:
a) (PHPMailer\PHPMailer), espace de noms: nécessaire pour la résolution des conflits de noms.
b) Le (require ("/ PHPMailer-master/src/Exception.php");): il manquait dans le code d'avs099, donc le problème rencontré par aProgger, vous avez besoin de cette ligne pour indiquer à la classe de courrier où se trouve la classe Exception .
Ceci est juste un espace de noms. Regardez les exemples pour référence - vous devez soit utiliser la classe namespaced, soit la référencer de manière absolue, par exemple:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
//Load composer's autoloader
require 'vendor/autoload.php';
Je vous suggère de chercher à obtenir composer
. https://getcomposer.org Composer facilite beaucoup l'obtention de bibliothèques tierces et l'utilisation d'un chargeur automatique unique pour chacun d'entre eux. les dépendances sont localisées, avec quelques capacités d'automatisation.
Télécharger https://getcomposer.org/composer.phar to C:\Inetpub\wwwroot\php
Supprimer votre C:\Inetpub\wwwroot\php\PHPMailer\
répertoire.
Utilisation composer.phar
pour obtenir le paquet phpmailer en utilisant la ligne de commande à exécuter
cd C:\Inetpub\wwwroot\php
php composer.phar require phpmailer/phpmailer
Une fois terminé, il créera un C:\Inetpub\wwwroot\php\vendor
répertoire avec tous les fichiers phpmailer et générer un autoloader.
Ensuite, dans le fichier de configuration principal de votre projet, vous devez inclure le fichier à chargement automatique.
require_once 'C:\Inetpub\wwwroot\php\vendor\autoload.php';
Le vendor\autoload.php
inclura les informations que vous pourrez utiliser $mail = new \PHPMailer;
Des informations supplémentaires sur le package PHPMailer sont disponibles à l’adresse suivante: https://packagist.org/packages/phpmailer/phpmailer
J'avais le même problème, à l'exception d'une légère différence, la version de PHPMailer 6.0 du bon ami avs099. Je sais que la nouvelle version de PHPMailer depuis février 2018 ne prend pas en charge l'autoload. l’espace de noms dans MVC, je laisse le code à ceux qui en ont besoin.
//Controller
protected function getLibraryWNS($libreria) {
$rutaLibreria = ROOT . 'libs' . DS . $libreria . '.php';
if(is_readable($rutaLibreria)){
require_once $rutaLibreria;
echo $rutaLibreria . '<br/>';
}
else{
throw new Exception('Error de libreria');
}
}
//loginController
public function enviarEmail($email, $nombre, $asunto, $cuerpo){
//Import the PHPMailer class into the global namespace
$this->getLibraryWNS('PHPMailer');
$this->getLibraryWNS('SMTP');
//Create a new PHPMailer instance
$mail = new \PHPMailer\PHPMailer\PHPMailer();
//Tell PHPMailer to use SMTP
$mail->isSMTP();
//Enable SMTP debugging
// $mail->SMTPDebug = 0; // 0 = off (for production use), 1 = client messages, 2 = client and server messages Godaddy POR CONFIRMAR
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
//Whether to use SMTP authentication
$mail->SMTPAuth = true; // authentication enabled
//Set the encryption system to use - ssl (deprecated) or tls
$mail->SMTPSecure = 'ssl'; //Seguridad Correo Gmail
//Set the hostname of the mail server
$mail->Host = "smtp.gmail.com"; //Host Correo Gmail
//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
$mail->Port = 465; //587;
//Verifica si el servidor acepta envios en HTML
$mail->IsHTML(true);
//Username to use for SMTP authentication - use full email address for gmail
$mail->Username = '[email protected]';
//Password to use for SMTP authentication
$mail->Password = 'tucontraseña';
//Set who the message is to be sent from
$mail->setFrom('[email protected]','Creador de Páginas Web');
$mail->Subject = $asunto;
$mail->Body = $cuerpo;
//Set who the message is to be sent to
$mail->addAddress($email, $nombre);
//Send the message, check for errors
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
return false;
} else {
echo "Message has been sent";
return true;
}
Just download composer and install phpMailler autoloader.php
https://github.com/PHPMailer/PHPMailer/blob/master/composer.json
once composer is loaded use below code:
require_once("phpMailer/class.phpmailer.php");
require_once("phpMailer/PHPMailerAutoload.php");
$mail = new PHPMailer(true);
$mail->SMTPDebug = true;
$mail->SMTPSecure = "tls";
$mail->SMTPAuth = true;
$mail->Username = 'youremail id';
$mail->Password = 'youremail password';
$mail_from = "youremail id";
$subject = "Your Subject";
$body = "email body";
$mail_to = "receiver_email";
$mail->IsSMTP();
try {
$mail->Host= "smtp.your.com";
$mail->Port = "Your SMTP Port No";// ssl port :465,
$mail->Debugoutput = 'html';
$mail->AddAddress($mail_to, "receiver_name");
$mail->SetFrom($mail_from,'AmpleChat Team');
$mail->Subject = $subject;
$mail->MsgHTML($body);
$mail->Send();
$emailreturn = 200;
} catch (phpmailerException $e) {
$emailreturn = $e->errorMessage();
} catch (Exception $e) {
$emailreturn = $e->getMessage();
}
echo $emailreturn;
J'espère que cela fonctionnera.
J'ai eu un certain nombre d'erreurs similaires à celle-ci. Assurez-vous que votre adresse email setFrom est valide dans $mail->setFrom()
À la lecture de ce que vous avez écrit, vous devrez également ajouter le fichier class.phpmailer.php à votre répertoire.
PHPMailerAutoload
doit être dans le même dossier que class.phpmailer.php
Ceci est le code PHPMailerAutoload
que je suppose comme ceci:
$filename = dirname(__FILE__).DIRECTORY_SEPARATOR.'class.'.strtolower($classname).'.php';