Einfache Anleitung: PHPMailer zum Versenden von Test-E-Mails verwenden
P粉344355715
2023-08-26 21:06:15
<p>Ich betreibe einen lokalen Apache2-Server unter Debian/Bullseye. Ich habe versucht, PHPMailer zum Laufen zu bringen, war aber erfolglos. Es scheint zwei verschiedene Möglichkeiten zu geben, PHPMailer zu installieren – die erste ist die Verwendung von Composer, die erste Methode, die ich ausprobiert habe. Es erstellt einen Vendor-Ordner im Stammverzeichnis der Site, der eine autoload.php-Datei sowie einige andere Dateien enthält. Die Datei enthält folgenden Inhalt: </p>
<pre class="brush:php;toolbar:false;"><?php
// autoload.php @generated von Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInitd359baac21f520c04e608f4eed750560::getLoader();</pre>
<p>Das sieht unvollständig aus (kein schließendes Tag). Jedenfalls bekomme ich das Beispiel „test.php“ nicht zum Laufen. </p>
<p>Eine andere Methode besteht darin, die ZIP-Datei von der gethub-Website herunterzuladen und in das Stammverzeichnis der Website zu extrahieren. Nach dem Umbenennen habe ich einen PHPMailer-Ordner erhalten. Auch die Verwendung des Beispiels „mailer.php“ hat keine Auswirkung. </p>
<p>In beiden Fällen habe ich die SMTP-Informationen geändert, um die tatsächlichen Kontoinformationen für die Domäne zu verwenden (Sende-E-Mail, Anmeldekennwort, SMTP-Servername, SMTP-Sicherheit des Hosts und Porteinstellungen), aber ich habe sogar keine Antwort auf die Ablehnung erhalten E-Mail wurde empfangen. Nichts ist passiert. Ich sehe nur eine leere Webseite. </p>
<p> Ich habe PHP am Laufen, weil ein PHP-Skript, das ich zuvor verwendet habe, immer noch funktioniert (von meiner Testseite – die eigentliche Seite besteht jetzt auf der Verwendung von SMTP und lässt mich das PEAR-Modul nicht installieren).</p>
<p>Hier ist das mailer.php-Skript, das ich verwende – einige Details sind ausgeblendet: </p>
<pre class="brush:php;toolbar:false;"><?php
//Importieren Sie die PHPMailer-Klasse in den globalen Namespace
//Diese müssen sich am Anfang des Skripts befinden, nicht innerhalb der Funktion
verwenden Sie PHPMailerPHPMailerPHPMailer;
verwenden Sie PHPMailerPHPMailerSMTP;
verwenden Sie PHPMailerPHPMailerException;
erfordern 'PHPMailer/src/Exception.php';
erfordern 'PHPMailer/src/PHPMailer.php';
erfordern 'PHPMailer/src/SMTP.php';
//Eine Instanz erstellen; „true“ übergeben, um Ausnahmen zu aktivieren
$mail = neuer PHPMailer(true);
Versuchen
{
//Server Einstellungen
$mail->SMTPDebug = SMTP::DEBUG_SERVER; //Detaillierte Debugging-Ausgabe aktivieren
$mail->isSMTP(); //Mit SMTP senden
$mail->Host = 'mail.<domain>.ca'; //Legen Sie den zu übergebenden SMTP-Server fest
$mail->SMTPAuth = true; //SMTP-Authentifizierung aktivieren
$mail->Username = 'mail@<domain>.ca'; //SMTP-Benutzername
$mail->Password = '<secret>'; //SMTP-Passwort
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Implizite TLS-Verschlüsselung aktivieren
$mail->Port = 465; //TCP-Port für die Verbindung; wenn „SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS“ festgelegt ist, verwenden Sie bitte 587
//Empfänger
$mail->setFrom('mail@<domain>.ca', 'von mir');
$mail->addAddress('gary@<domain>.ca', 'to me'); //Einen Empfänger hinzufügen
// $mail->addAddress('Recipient@emailaddress.com'); //Name ist optional
// $mail->addReplyTo('yourname@domain.com', 'Your Name');
// $mail->addCC('cc@example.com');
// $mail->addBCC('bcc@example.com');
//Anhänge (optional)
// $mail->addAttachment('/var/tmp/file.tar.gz'); //Anhang hinzufügen
// $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); //Optionaler Name
//Inhalt
$mail->isHTML(true); //E-Mail-Format auf HTML setzen
$mail->Subject = 'Hier ist der Betreff';
$mail->Body = 'Dies ist der HTML-Nachrichtentext in Fettschrift!';
$mail->AltBody = 'Dies ist der Textkörper im Klartext für Nicht-HTML-Mail-Clients';
$mail->send();
echo 'Nachricht wurde gesendet';
}
Catch (Ausnahme $e)
{
echo „Nachricht konnte nicht gesendet werden: {$mail->ErrorInfo}“;
}
?></pre>
<p>Die TLS-Leitungen stammen vom Hosting-Unternehmen, daher gehe ich davon aus, dass sie korrekt sind. </p>
<p>Ich habe die Optionen, die ich in meinem Test nicht benötige, auskommentiert, aber es funktioniert immer noch nicht. Kann jemand herausfinden, was ich falsch mache? </p>
<p>Vielen Dank. </p>
好的,明白了。主机公司提供了测试代码,他们的示例使用了smtp.domain.com。实际上,他们的smtp服务器是mail,而不是smtp。我猜想当面对一个不存在的服务器时,代码就会停止运行...