Guide simple : Utiliser PHPMailer pour envoyer des e-mails de test
P粉344355715
2023-08-26 21:06:15
<p>J'utilise un serveur Apache2 local sur Debian/Bullseye. J'ai essayé de faire fonctionner PHPMailer mais sans succès. Il semble y avoir deux manières différentes d'installer PHPMailer : la première consiste à utiliser composer, qui a été la première méthode que j'ai essayée. Il crée un dossier fournisseur à la racine du site, qui contient un fichier autoload.php, ainsi que quelques autres fichiers. Le fichier contient le contenu suivant : </p>
<pre class="brush:php;toolbar:false;"><?php
// autoload.php @généré par Composer
require_once __DIR__ '/composer/autoload_real.php';
return ComposerAutoloaderInitd359baac21f520c04e608f4eed750560::getLoader();</pre>
<p>Cela semble incomplet (pas de balise de fermeture). Quoi qu'il en soit, je n'arrive pas à faire fonctionner l'exemple "test.php". </p>
<p>Une autre méthode consiste à télécharger le fichier .zip depuis le site Web Gethub et à l'extraire dans le répertoire racine du site. Après avoir renommé, j'ai obtenu un dossier PHPMailer. L'utilisation de l'exemple "mailer.php" n'a également aucun effet. </p>
<p>Dans les deux cas, j'ai modifié les informations smtp pour utiliser les informations réelles du compte pour le domaine (envoi d'e-mail, mot de passe de connexion, nom du serveur smtp, sécurité smtp de l'hôte et paramètres de port), mais je n'ai même pas répondu au refus. l'e-mail a été reçu. Rien ne s'est passé. Tout ce que je vois, c'est une page Web vierge. </p>
<p> J'ai php en cours d'exécution car un script php que j'utilisais auparavant fonctionne toujours (depuis mon site de test - le site actuel insiste maintenant pour utiliser smtp et ne me laisse pas installer le module PEAR).</p>
<p>Voici le script mailer.php que j'utilise - quelques détails cachés : </p>
<pre class="brush:php;toolbar:false;"><?php
//Importez la classe PHPMailer dans l'espace de noms global
//Ceux-ci doivent être en haut du script, pas à l'intérieur de la fonction
utilisez PHPMailerPHPMailerPHPMailer ;
utilisez PHPMailerPHPMailerSMTP ;
utilisez PHPMailerPHPMailerException ;
nécessite 'PHPMailer/src/Exception.php';
nécessite 'PHPMailer/src/PHPMailer.php';
nécessite 'PHPMailer/src/SMTP.php' ;
//Créez une instance ; passez 'true' pour activer les exceptions
$mail = nouveau PHPMailer(true);
Essayer
{
//Paramètres du serveur
$mail->SMTPDebug = SMTP::DEBUG_SERVER; //Activer la sortie de débogage détaillée
$mail->isSMTP(); //Envoyer via SMTP
$mail->Host = 'mail.<domain>.ca'; //Définit le serveur SMTP à transmettre
$mail->SMTPAuth = true; //Activer l'authentification SMTP
$mail->Nom d'utilisateur = 'mail@<domaine>.ca' //Nom d'utilisateur SMTP
$mail->Mot de passe = '<secret>' //Mot de passe SMTP
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS //Activer le cryptage TLS implicite
$mail->Port = 465; //Port TCP auquel se connecter ; si 'SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS' est défini, veuillez utiliser 587.
//destinataire
$mail->setFrom('mail@<domain>.ca', 'de moi');
$mail->addAddress('gary@<domain>.ca', 'à moi'); //Ajouter un destinataire
// $mail->addAddress('Recipient@emailaddress.com'); //Le nom est facultatif
// $mail->addReplyTo('votrenom@domaine.com', 'Votre nom');
// $mail->addCC('cc@exemple.com');
// $mail->addBCC('bcc@example.com');
//Pièces jointes (facultatif)
// $mail->addAttachment('/var/tmp/file.tar.gz'); //Ajouter une pièce jointe
// $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); //Nom facultatif;
//contenu
$mail->isHTML(true); //Définir le format du courrier électronique sur HTML
$mail->Sujet = 'Voici le sujet';
$mail->Body = 'Voici le corps du message HTML en gras !';
$mail->AltBody = 'Ceci est le corps en texte brut pour les clients de messagerie non HTML';
$mail->envoyer();
echo 'Le message a été envoyé';
}
attraper (Exception $e)
{
echo "Le message n'a pas pu être envoyé. Erreur de messagerie : {$mail->ErrorInfo}";
}
?>≪/pré>
<p>Les lignes TLS proviennent de la société d'hébergement, je suppose donc qu'elles sont correctes. </p>
<p>J'ai commenté les options dont je n'ai pas besoin dans mon test, mais cela ne fonctionne toujours pas. Quelqu'un peut-il comprendre ce que je fais de mal ? </p>
<p>Merci. </p>
D'accord, j'ai compris. La société d'hébergement fournit du code de test et son exemple utilise smtp.domain.com. En fait, leur serveur SMTP est mail, pas SMTP. Je suppose que le code cesse de s'exécuter face à un serveur inexistant...