phpmailer: Ein leistungsstarkes Tool zum Senden von PHP Mail
Phpmailer ist eine beliebte Open -Source -PHP -Mail -Lieferbibliothek. In diesem Artikel wird erkl?rt, warum Phpmailer besser ist als die integrierten mail()
-Funktionen von PHP und Code-Beispiele bereitgestellt.
Kernpunkte
- phpmailer ist eine beliebte Open-Source-PHP-Mail-Zustellbibliothek, die mehr Funktionen und Flexibilit?t bietet als integrierte
mail()
-Funktionen von PHP, einschlie?lich objektorientierter Schnittstellen, einfacher HTML- und Anhangsprozess sowie der Verwendung nicht lokaler Mail-Server F?higkeit. - phpmailer kann mit Composer installiert werden und wird von beliebten PHP -Content -Management -Systemen wie WordPress, Drupal und Joomla verwendet.
- Diese Bibliothek bietet einen leistungsstarken Fehlerbehebungsmechanismus, der Fehlermeldungen in mehr als 40 Sprachen drucken und die SMTP -Protokollunterstützung sowie die SSL- und TLS -Authentifizierung integriert.
- Zus?tzlich zum Versenden von E-Mails unterstützt Phpmailer auch das Hinzufügen von Anh?ngen, das Senden von HTML- oder Klartextversionen von E-Mails und die Verwendung von SMTP zum Senden von E-Mails von nicht-lokalen Servern. Sie unterstützt jedoch nicht das Abrufen von E-Mails von E-Mail-Servern mit POP3-Protokoll.
Vergleich zwischen Phpmailer und PHP mail()
Funktionen
In den meisten F?llen ist Phpmailer eine Alternative zu integrierten PHP-integrierten mail()
-Funktionen, aber in vielen F?llen reicht die Flexibilit?t der mail()
-Funktionen nicht aus, um den Anforderungen gerecht zu werden.
Erstens liefert Phpmailer eine objektorientierte Schnittstelle, w?hrend die mail()
-Funktion nicht objektorientiert ist. PHP -Entwickler erstellen im Allgemeinen nicht gerne mail()
Zeichenfolgen beim Senden von E -Mails mit $headers
Funktionen, da dies viele Fluchtvorg?nge erfordert. Phpmailer vereinfacht diesen Prozess. Beim Senden von Anh?ngen und HTML-basierten E-Mails mithilfe der mail()
-Funktion müssen Entwickler auch komplexe Code (entkommene Zeichen, Codierung und Formatierung) schreiben, und Phpmailer macht dies einfach.
Darüber hinaus erfordert die Funktion mail()
eine lokale E -Mail -Server zum Senden von E -Mails, die nicht immer einfach zu setzen ist. Wenn Authentifizierung verfügbar ist, kann Phpmailer einen nicht-lokalen Mailserver (SMTP) verwenden.
Andere Vorteile sind:
- Wenn das Senden einer Nachricht fehlschl?gt, k?nnen verschiedene Fehlermeldungen in mehr als 40 Sprachen gedruckt werden.
- IT integriert die SMTP -Protokollunterstützung sowie die SSL- und TLS -Authentifizierung.
- kann eine alternative Klartextversion von Nachrichten an Non-HTML-Mail-Clients senden.
- Es gibt eine sehr aktive Gemeinschaft von Entwicklern, um es sicher und auf dem neuesten Stand zu halten.
phpmailer wird auch von beliebten PHP -Content -Management -Systemen wie WordPress, Drupal und Joomla verwendet.
Phpmailer
installierenphpmailer kann mit Composer installiert werden:
composer require phpmailer/phpmailer
E -Mails vom lokalen Webserver mit Phpmailer
sendenFolgendes ist das einfachste Beispiel für das Senden von E -Mails von einem lokalen Webserver mit PHPMailer:
composer require phpmailer/phpmailer
Der Code und die Kommentare in der PHP -Datei sollten alles erkl?ren, was eindeutig genug passiert.
E -Mails senden, die Anh?nge enthalten
Folgendes ist ein Beispiel dafür, wie Sie PHPMailer verwenden, um E -Mails mit Anh?ngen zu senden:
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require_once "vendor/autoload.php"; // PHPMailer對(duì)象 $mail = new PHPMailer(true); // 構(gòu)造函數(shù)中的參數(shù)true啟用異常 // 發(fā)件人郵箱地址和名稱 $mail->From = "from@yourdomain.com"; $mail->FromName = "完整姓名"; // 收件人地址和名稱 $mail->addAddress("recepient1@example.com", "收件人姓名"); $mail->addAddress("recepient1@example.com"); // 收件人姓名是可選的 // 收件人回復(fù)地址 $mail->addReplyTo("reply@yourdomain.com", "回復(fù)"); // 抄送和密送 $mail->addCC("cc@example.com"); $mail->addBCC("bcc@example.com"); // 發(fā)送HTML或純文本郵件 $mail->isHTML(true); $mail->Subject = "主題文本"; $mail->Body = "<i>HTML格式郵件正文</i>"; $mail->AltBody = "這是郵件內(nèi)容的純文本版本"; try { $mail->send(); echo "郵件已成功發(fā)送"; } catch (Exception $e) { echo "郵件錯(cuò)誤:" . $mail->ErrorInfo; } ?>
Hier fügen wir zwei Dateien an - Datei.txt (im selben Verzeichnis wie das Skript) und Bilder/Profil.png (im Bilderverzeichnis des Skriptverzeichnisses).
Um Anh?nge zu einer E -Mail hinzuzufügen, rufen wir einfach die Funktion addAttachment
des Phpmailer -Objekts auf, indem wir den Dateipfad als Parameter übergeben. Um mehrere Dateien anzuh?ngen, müssen wir es mehrmals aufrufen.
Fehlerbehebung
In unseren beiden Beispielen haben wir die Exception
-Klasse von Phpmailer zum Debuggen verwendet, sodass alle geworfenen Fehler uns helfen werden, alle Probleme zu debuggen, die m?glicherweise auftreten. Wir haben auch den Parameter true
zum Phpmailer-Konstruktor hinzugefügt, um h?here und beschreibendere Ausnahmen auszugeben.
Abh?ngig von dem von uns verwendeten System wird der gr??te Fehler, den wir m?glicherweise sehen, mit der Ausführung der mail()
-Funktion im Hintergrund zusammenh?ngen:
E -Mail -Fehler: Die Mail -Funktion kann nicht instanziiert werden.
Wenn wir detailliertere Fehlerinformationen ben?tigen, k?nnen wir auch der catch
-Klausel Folgendes hinzufügen:
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require_once "vendor/autoload.php"; $mail = new PHPMailer; $mail->From = "from@yourdomain.com"; $mail->FromName = "完整姓名"; $mail->addAddress("recipient1@example.com", "收件人姓名"); // 提供附件的文件路徑和名稱 $mail->addAttachment("file.txt", "File.txt"); $mail->addAttachment("images/profile.png"); // 文件名是可選的 $mail->isHTML(true); $mail->Subject = "主題文本"; $mail->Body = "<i>HTML格式郵件正文</i>"; $mail->AltBody = "這是郵件內(nèi)容的純文本版本"; try { $mail->send(); echo "郵件已成功發(fā)送"; } catch (Exception $e) { echo "郵件錯(cuò)誤:" . $mail->ErrorInfo; } ?>
Normalerweise h?ngt das Problem mit der Mail -Funktion mit den fehlenden Mailservereinstellungen zusammen. In diesem Fall wird die error_get_last
-Funktion etwas wie folgt zurückgegeben:
print_r(error_get_last());
Dies ist wahrscheinlich das h?ufigste Problem, das wir haben, und wir k?nnen es leicht mit SMTP l?sen.
Lokalisierungsfehlermeldung
anzeigen $mail->ErrorInfo
kann Fehlermeldungen in 43 verschiedenen Sprachen zurückgeben.
Kopieren Sie das Sprachverzeichnis aus dem Quellcode von Phpmailer in das Projektverzeichnis, um Fehlermeldungen in verschiedenen Sprachen anzuzeigen.
Setzen Sie beispielsweise eine Fehlermeldung auf Russisch, um das Phpmailer -Objekt auf Russisch zu setzen, indem Sie die folgende Methode aufrufen:
<code>Array ( [type] => 2 [message] => mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() [file] => OUR_PATH \vendor\phpmailer\phpmailer\src\PHPMailer.php [line] => 863 )</code>
Sie k?nnen auch Ihre eigenen Sprachdateien zum Sprachverzeichnis hinzufügen.
Verwenden von SMTP
Sie k?nnen E -Mails mit dem E -Mail -Server eines anderen Hosts senden. Dies erfordert jedoch zuerst eine Authentifizierung. Um beispielsweise E -Mails vom Mailserver von Google Mail zu senden, müssen Sie ein Google Mail -Konto haben.
SMTP ist ein Protokoll, das vom Mail -Client verwendet wird, um E -Mail -Anfragen an den Mailserver zu senden. Nachdem der Mailserver die E -Mail überprüft hat, wird er an den Ziel -Mailserver gesendet.
Folgendes ist ein Beispiel für das Versenden von E -Mails von Ihrer Domain von Ihrem Google Mail -Mailserver. Sie ben?tigen keinen lokalen Server, um den Code auszuführen. Wir werden das SMTP -Protokoll verwenden:
composer require phpmailer/phpmailer
Google Mail erfordert eine TLS -Verschlüsselung über SMTP, daher setzen wir sie entsprechend. Bevor Sie SMTP senden, müssen Sie den Hostnamen, die Portnummer, feststellen, ob der Verschlüsselungstyp erforderlich ist und wenn eine Authentifizierung erforderlich ist, sind auch der Benutzername und das Kennwort erforderlich. Beachten Sie, dass Sie mit Ihrem Benutzernamen/Passwort nicht die SMTP-SMTP verwenden k?nnen, um die Zwei-Faktor-Authentifizierung auf Google Mail zu verwenden. Stattdessen ist eine zus?tzliche Konfiguration erforderlich.
Einer der gro?en Vorteile bei der Verwendung von Remote SMTP anstelle von lokaler Mails besteht darin, dass wenn Sie PHPs mail()
-Funktion verwenden, um E -Mails zu senden und die Absendungsadressdom?ne auf etwas anderes als den lokalen Domain -Namen (Servernamen) festlegen, den Empf?nger des Empf?ngers Der Angriffsfilter des E -Mail -Servers markiert es als Spam. Wenn Sie beispielsweise eine E -Mail an name@yahoo.com von einem Server mit Hostname -Beispiel.com senden, unter Verwendung der Absenderadresse name@gmail.com, markiert Yahoo's Server sie als Spam oder zeigt eine Nachricht an den Benutzer an, wobei Sie nicht anweisen, nicht Um der Nachricht zu vertrauen, da die Quelle der Nachricht example.com ist, wird sie jedoch von gmail.com angezeigt. Obwohl Sie name@gmail.com haben, hat Yahoo keine M?glichkeit, dies zu wissen.
E -Mails mit POP3
abrufenphpmailer erm?glicht auch die Pop-Before-SMTP-überprüfung zum Senden von Mail. Mit anderen Worten, Sie k?nnen sich mit Pop authentifizieren und E -Mails mit SMTP senden. Leider unterstützt Phpmailer nicht das Abrufen von E -Mails von einem E -Mail -Server mithilfe des POP3 -Protokolls. Es ist nur auf das Versenden von Mail beschr?nkt.
Schlussfolgerung
Wenn Sie PHP -Entwickler sind, ist es fast unm?glich, programmgesteuert zu vermeiden, dass E -Mails gesendet werden. W?hrend Sie Dienste von Drittanbietern wie Mandrill oder SendGrid ausw?hlen k?nnen, ist dies manchmal einfach nicht machbar und umso mehr beim Schreiben Ihrer eigenen E-Mail-Senden-Bibliothek. Hier kommen Phpmailer und seine Alternativen (Zend Mail, Swift Mailer usw.) ins Spiel.
Sie k?nnen die API über diese Bibliothek im Repository -Wiki oder in der offiziellen Dokumentation kennenlernen.
Sind Sie mit Abh?ngigkeiten der PHP -Bibliothek beunruhigt? Sehen Sie sich unsere Bildschirmaufzeichnung an, um zu sehen, wie Composer Ihnen helfen kann, sie zu verwalten.
h?ufig gestellte Fragen zu Phpmailer
Was ist Phpmailer? PHPMailer ist eine beliebte Open -Source -PHP -Bibliothek zum Senden von E -Mails von PHP -Anwendungen. Es bietet eine einfache und flexible M?glichkeit, E -Mails über SMTP, mail()
oder andere E -Mail -Senden -Methoden zu senden.
Wie installiere ich Phpmailer? Sie k?nnen Composer verwenden, um Phpmailer zu installieren, oder Sie k?nnen die Bibliothek direkt von GitHub herunterladen. Detaillierte Installationsanweisungen finden Sie in der PhpMailer -Dokumentation.
Ist Phpmailer frei zu verwenden? Ja, Phpmailer ist Open Source und wird unter der LGPL -Lizenz ver?ffentlicht. Dies bedeutet, dass es kostenlos in Open Source- und kommerziellen Projekten verfügbar ist.
Was sind die Systemanforderungen für Phpmailer? Phpmailer ist mit PHP 5.5 und sp?ter kompatibel. Stellen Sie sicher, dass Ihre Webhosting -Umgebung diese PHP -Versionen unterstützt.
Wie sende ich E -Mails mit Phpmailer? Sie k?nnen Phpmailer verwenden, um E -Mails zu senden, indem Sie eine Instanz der Phpmailer -Klasse erstellen, die erforderlichen Eigenschaften wie SMTP -Serverdetails und E -Mail -Inhalte festlegen und dann die send()
-Methode aufrufen.
Kann Phpmailer Anh?nge in E -Mails verarbeiten? Ja, Phpmailer bietet Methoden zum Hinzufügen von Anh?ngen zu Ihren E -Mails. Sie k?nnen Dateien von einem Server oder Remote -Speicherort anh?ngen.
Was ist SMTP und warum sollte ich es mit Phpmailer verwenden? SMTP (Simple Mail Transfer Protocol) ist eine g?ngige Methode zum Senden von E -Mails. Durch die Verwendung von SMTP mit PHPMailer k?nnen Sie E -Mails über einen Remote -E -Mail -Server senden und eine bessere Steuerung und Zuverl?ssigkeit für die E -Mail -Zustellung bieten.
Kann ich HTML -E -Mails mit Phpmailer senden?
Ja, Phpmailer erm?glicht es Ihnen, E -Mails in einfachen Text- und HTML -Formaten zu senden. Sie k?nnen den Nachrichtentyp und den Format entsprechend festlegen. Plain Text-E-Mail eignet sich für Nicht-HTML-Mail-Kunden.
Kann ich Phpmailer verwenden, um Klartext-E-Mails an Non-HTML-Mail-Clients zu senden?
Ja, Phpmailer erm?glicht es Ihnen, einfache Text -E -Mails als Alternative zu HTML -E -Mails zu senden. Sie k?nnen den Nachrichtentyp und den Format entsprechend festlegen. Plain Text-E-Mail eignet sich für Nicht-HTML-Mail-Kunden.
Kann ich Phpmailer mit einem Nicht-SMTP-Mailserver wie Sendmail verwenden? Ja, Phpmailer unterstützt eine Vielzahl von E -Mail -übertragungsmethoden, einschlie?lich SMTP, mail()
und anderen benutzerdefinierten Methoden, sodass Sie sie mit verschiedenen Arten von Mail -Servern verwenden k?nnen.
Das obige ist der detaillierte Inhalt vonSenden von E -Mails in PHP mit Phpmailer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen





Um die St?rke des Kennworts zu bestimmen, muss die regelm??ige und logische Verarbeitung kombiniert werden. Die grundlegenden Anforderungen umfassen: 1. Die L?nge betr?gt mindestens 8 Ziffern; 2. Enthaltende Kleinbuchstaben, Gro?buchstaben und Zahlen; 3.. Spezielle Charakterbeschr?nkungen k?nnen hinzugefügt werden; In Bezug auf fortgeschrittene Aspekte müssen eine kontinuierliche Vervielf?ltigung von Zeichen und inkrementelle/abnehmende Sequenzen vermieden werden, was eine PHP -Funktionserkennung erfordert. Gleichzeitig sollten Blacklists vorgestellt werden, um gemeinsame schwache Passw?rter wie Passwort und 123456 zu filtern. Schlie?lich wird empfohlen, die ZXCVBN -Bibliothek zu kombinieren, um die Bewertungsgenauigkeit zu verbessern.

Um zwei PHP -Arrays zusammenzuführen und eindeutige Werte zu behalten, gibt es zwei Hauptmethoden. 1. Verwenden Sie für Index -Arrays oder nur Deduplizierung Array_merge und Array_unique -Kombinationen: Zuerst merge array_merge ($ array1, $ array2) und verwenden Sie dann Array_unique (), um sie endgültig zu erhalten, um ein neues Array zu erhalten, das alle eindeutigen Werte enth?lt. 2. Verwenden Sie für assoziative Arrays und m?chten im ersten Array Schlüsselwertepaare beibehalten: $ result = $ array1 $ array2, was sicherstellt, dass die Schlüssel im ersten Array vom zweiten Array nicht überschrieben werden. Diese beiden Methoden gelten für verschiedene Szenarien, je nachdem, ob der Schlüsselname beibehalten wird oder nur der Fokus liegt

Um PHP -Datei -Uploads sicher zu verarbeiten, müssen Sie die Quelle und die Type und die Eingabe des Dateinamens und des Pfades überprüfen, Serverbeschr?nkungen festlegen und Mediendateien zweimal verarbeiten. 1. überprüfen Sie die Upload -Quelle, um CSRF durch Token zu verhindern, und erkennen Sie den realen MIME -Typ über die Finfo_file mithilfe der Whitelist -Steuerung. 2. Benennen Sie die Datei in eine zuf?llige Zeichenfolge um und bestimmen Sie die Erweiterung, um sie gem?? dem Erkennungstyp in einem Verzeichnis ohne Web zu speichern. 3. Die PHP -Konfiguration begrenzt die Hochladengr??e und das tempor?re Verzeichnis Nginx/Apache verbietet den Zugriff auf das Upload -Verzeichnis. 4. Die GD -Bibliothek stellt die Bilder neu, um potenzielle b?swillige Daten zu l?schen.

H?ufige Probleme und L?sungen für den variablen PHP -Umfang umfassen: 1. Die globale Variable kann innerhalb der Funktion nicht zugegriffen werden, und sie muss bei der Verwendung des globalen Schlüsselworts oder Parameters übergeben werden. 2. Die statische Variable wird statisch deklariert und nur einmal initialisiert und der Wert wird zwischen mehreren Aufrufen beibehalten. 3.. Hyperglobale Variablen wie $ _get und $ _post k?nnen direkt in jedem Bereich verwendet werden, aber Sie müssen auf eine sichere Filterung achten. 4. Die anonymen Funktionen müssen über das Schlüsselwort verwenden, und wenn Sie externe Variablen ?ndern, müssen Sie eine Referenz übergeben. Das Beherrschen dieser Regeln kann dazu beitragen, Fehler zu vermeiden und die Code -Stabilit?t zu verbessern.

Es gibt drei g?ngige Methoden für den PHP -Kommentarcode: 1. Verwenden Sie // oder #, um eine Codezeile zu blockieren, und es wird empfohlen, // zu verwenden. 2. Verwenden Sie /.../, um Codebl?cke mit mehreren Zeilen zu wickeln, die nicht verschachtelt werden k?nnen, aber gekreuzt werden k?nnen. 3.. Kombinationskenntnisse Kommentare wie die Verwendung / if () {} / Um Logikbl?cke zu steuern oder um die Effizienz mit Editor -Verknüpfungsschlüssel zu verbessern, sollten Sie auf die Schlie?ung von Symbolen achten und das Verschachteln bei der Verwendung vermeiden.

Der Schlüssel zum Schreiben von PHP -Kommentaren liegt in der Kl?rung des Zwecks und der Spezifikationen. Kommentare sollten "Warum" und nicht "was getan" erkl?ren, um Redundanz oder zu Einfachheit zu vermeiden. 1. Verwenden Sie ein einheitliches Format wie Docblock (/*/) für Klassen- und Methodenbeschreibungen, um die Lesbarkeit und die Kompatibilit?t der Werkzeuge zu verbessern. 2. Betonen Sie die Gründe für die Logik, z. B. warum JS -Sprünge manuell ausgeben müssen. 3. Fügen Sie eine übersichtsbeschreibung vor komplexem Code hinzu, beschreiben Sie den Prozess in Schritten und helfen Sie, die Gesamtidee zu verstehen. V. Gute Anmerkungen k?nnen die Kommunikationskosten senken und die Effizienz der Code -Wartung verbessern.

AgneeratorinphpiSamemory-effizientes WaytoiterateOverlargedatasetsByyieldingValueatimeinsteadofReturningThemallatonce.1.GeneratorsusetheyieldKeywordtoproduktenvaluesonDemand, ReducingMemoryUsage.2.TheyareusefulforfulforfulfordlingBiglopploups, Lesebiglochen, Leselungen, Lesebigs, Leselung, oder

Es gibt zwei M?glichkeiten, ein Array in PHP zu erstellen: Verwenden Sie die Funktion array () oder verwenden Sie Klammern []. 1. Die Verwendung der Funktion array () ist eine traditionelle Art und Weise mit guter Kompatibilit?t. Definieren Sie Indexarrays wie $ fruits = Array ("Apple", "Banana", "Orange") und assoziative Arrays wie $ user = array ("name" => "John", "Age" => 25); 2. Die Verwendung [] ist eine einfachere M?glichkeit, seit Php5.4 wie $ Color zu unterstützen
