In diesem Artikel werden wir die Mail-API im Laravel-Webframework untersuchen. Laravel nutzt die beliebte SwiftMailer-Bibliothek, die einfach zu bedienen ist und mit einer Vielzahl von E-Mail-Treibern zur Auswahl steht. In den letzten Phasen des Artikels werden wir die in der ersten Hälfte des Artikels besprochenen Konzepte eingehend demonstrieren.
Laravel implementiert einen Wrapper auf der SwiftMailer-Bibliothek, der die Verwaltung und Verwaltung von E-Mails sehr einfach macht. Sie finden die Standard-Maileinstellungen unter config / mail.php
.
env ('MAIL_DRIVER', 'sendmail'), / * | -------------------------------- -------------------------------------- SMTP-Hostadresse | ---------------------------------------------- ---------------------------- | | Hier können Sie die Hostadresse des von Ihrem | verwendeten SMTP-Servers angeben Anwendungen. Es wird eine Standardoption bereitgestellt, die mit | kompatibel ist der Mailgun-Mail-Dienst, der zuverlässige Lieferungen gewährleistet. | * / 'host' => env ('MAIL_HOST', 'smtp.mailgun.org'), / * | ------------------------- --------------------------------------------- | SMTP-Hostanschluss | ---------------------------------------------- ---------------------------- | | Dies ist der SMTP-Port, über den Ihre Anwendung E-Mails an | sendet Benutzer der Anwendung. Wie der Host haben wir diesen Wert auf | gesetzt Bleiben Sie standardmäßig mit der Mailgun-E-Mail-Anwendung kompatibel. | * / 'port' => env ('MAIL_PORT', 587), / * | --------------------------- --------------------------------------- | Globale Absenderadresse | ---------------------------------------- ------------------------------ | | Möglicherweise möchten Sie, dass alle von Ihrer Anwendung gesendeten E-Mails von | gesendet werden die gleiche Adresse Hier können Sie einen Namen und eine Adresse angeben, die | sind wird global für alle E-Mails verwendet, die von Ihrer Anwendung gesendet werden. | * / 'from' => ['address' => env ('MAIL_FROM_ADDRESS', '[email protected]'), 'name' => env ('MAIL_FROM_NAME', 'Example'),], / * | - -------------------------------------------------- ----------------------- | E-Mail-Verschlüsselungsprotokoll | ---------------------------------------- ------------------------------ | | Hier können Sie das Verschlüsselungsprotokoll angeben, das bei | verwendet werden soll Die Anwendung sendet E-Mail-Nachrichten. Eine sinnvolle Voreinstellung mit dem | Das Transportschicht-Sicherheitsprotokoll sollte eine große Sicherheit bieten. | * / 'encrypt' => env ('MAIL_ENCRYPTION', 'tls'), / * | ------------------------- ----------------------------------------- | SMTP-Server-Benutzername | ------------------------------------------ ---------------------------- | | Wenn für Ihren SMTP-Server ein Benutzername zur Authentifizierung erforderlich ist, sollten Sie | Stellen Sie es hier. Dies wird verwendet, um sich bei Ihrem Server bei | zu authentifizieren Verbindung. Sie können auch den "Passwort" -Wert unter diesem Wert festlegen. | * / 'username' => env ('MAIL_USERNAME'), 'password' => env ('MAIL_PASSWORD'), / * | --------------------- -------------------------------------------------- --- | Sendmail-Systempfad | ------------------------------------------ ---------------------------- | | Wenn Sie den "sendmail" -Treiber zum Senden von E-Mails verwenden, müssen wir | wissen der Pfad zu dem Ort, an dem Sendmail auf diesem Server lebt. Ein Standardpfad hat | wurde hier bereitgestellt, was auf den meisten Ihrer Systeme gut funktioniert. | * / 'sendmail' => '/ usr / sbin / sendmail -bs', / * | ----------------------------- ----------------------------------------- | Mail-Einstellungen markieren | ------------------------------------------ ---------------------------- | | Wenn Sie das Markdown-basierte E-Mail-Rendering verwenden, können Sie Ihr | konfigurieren Hier sind Themen- und Komponentenpfade, mit denen Sie das Design anpassen können der E-Mails. Oder halten Sie sich einfach an die Laravel-Standardeinstellungen! | * / 'markdown' => ['theme' => 'default', 'path' => [resource_path ('views / vendor / mail')],],];];
Beim Versenden von E-Mails unterstützt Laravel verschiedene Treiber zur Auswahl. Wie Sie sehen, der Standard MAIL_DRIVER
ist eingestellt auf smtp
.
Wenn Sie das benutzen werden smtp
Wenn Sie den Treiber zum Versenden von E-Mails senden, müssen Sie auch andere verwandte Einstellungen wie MAIL_HOST
, MAIL_PORT
, MAIL_ENCRYPTION
, MAIL_USERNAME
, und MAIL_PASSWORD
.
Auf der anderen Seite, wenn Sie die verwenden möchten sendmail
Treiber, dann möchten Sie sicherstellen, dass die sendmail
Systempfad wird auf den korrekten Wert in gesetzt config / mail.php
Datei.
Sie können auch einstellen von
Adresse, die beim Versenden von E-Mails unter verwendet wird von
Schlüssel. Und wenn Sie Markdown-basiertes E-Mail-Rendering verwenden möchten, können Sie diese Einstellungen unter festlegen Markdown
Schlüssel.
Das Tolle an der Spitze ist, dass Sie auch E-Mail-Dienstanbieter von Drittanbietern wie Mailgun, Mandrill, SES und SparkPost verwenden können. Wenn Sie einen dieser Dienste verwenden, müssen Sie sicherstellen, dass Sie die entsprechenden Einstellungen in festlegen config / services.php
Datei.
Das war also eine grundlegende Einführung in die Einstellungen der Mail-API in Laravel. Ab dem nächsten Abschnitt gehen wir ein benutzerdefiniertes Beispiel durch, das Ihnen zeigt, wie Sie E-Mails senden.
In diesem Abschnitt erstellen wir die E-Mail-Klasse, die zum Senden von E-Mails verwendet wird. Die mailable-Klasse ist für das Senden von E-Mails mit einem Mailer verantwortlich, der in der konfiguriert ist config / mail.php
Datei. In der Tat bietet Laravel bereits einen handwerklichen Befehl, mit dem wir eine Basisvorlage erstellen können.
PHP Handwerker machen: Mail DemoEmail
Das sollte eine leere E-Mail-Vorlage unter erstellen app / Mail / DemoEmail.php
, wie im folgenden Ausschnitt gezeigt.
view ('view.name');
Lassen Sie uns den Inhalt dieser Datei durch Folgendes ersetzen.
Demo = $ Demo; / ** * Erstellen Sie die Nachricht. * * @return $ this * / public function build () return $ this-> from ([email protected] ') -> view (' mails.demo ') -> text (' mails.demo_plain ') - > mit (['testVarOne' => '1', 'testVarTwo' => '2',]) -> attach (public_path ('/ images'). '/ demo.jpg', ['as' => ' demo.jpg ',' mime '=>' image / jpeg ',]);
Es gibt zwei wichtige Methoden, die die mailable-Klasse im Allgemeinen implementiert-__konstruieren
und bauen
. Das __konstruieren
Diese Methode wird zum Initialisieren von Objekten verwendet, die in der E-Mail-Vorlage verwendet werden sollen. Auf der anderen Seite die bauen
Diese Methode wird verwendet, um weitere E-Mail-spezifische Werte wie from, Ansichtsvorlage, Anhänge und ähnliches zu initialisieren.
In unserem Fall haben wir das bestanden $ Demo
Objekt als Konstruktorargument, und es wird dem zugewiesen Demo
öffentliches Eigentum.
In dem bauen
Methode haben wir eine E-Mail-spezifische Konfiguration initialisiert.
von
wird verwendet, um eine E-Mail-Adresse festzulegen, die als Absenderadresse verwendet wird.Aussicht
Auf diese Weise können Sie die E-Mail-Vorlage festlegen, die beim Senden einer E-Mail mit dieser E-Mail-Adresse verwendet wird. In unserem Fall haben wir es auf gesetzt mails.demo
, und es bedeutet, dass Sie eine Ansichtsvorlagendatei unter erstellen müssen resources / views / mails / demo.blade.php
.Text
Diese Methode wird zum Einrichten der Nur-Text-Version einer E-Mail-Vorlage verwendet.__konstruieren
Diese Methode wird zum Einrichten von Objekten verwendet, die in der E-Mail-Vorlage verwendet werden. Sie können auch die mit
Methode, mit der Sie die Ansichtsdaten einer Nachricht festlegen können.anfügen
Methode zum Anhängen eines Bildes mit einer Nachricht.Natürlich müssen wir E-Mail-Vorlagen erstellen, die wir beim Senden von E-Mails verwenden sollen. Fahren Sie fort und erstellen Sie eine Datei resources / views / mails / demo.blade.php
wie im folgenden Ausschnitt gezeigt.
Hallo $ demo-> Empfänger,Dies ist eine Demo-E-Mail zu Testzwecken! Es ist auch die HTML-Version.
Demo-Objektwerte:
Demo eins: $ demo-> demo_one
Demo zwei: $ demo-> demo_two
Werte, die von With-Methode übergeben werden:
Danke dir,testVarOne: $ testVarOne
testVarTwo: $ testVarTwo
$ demo-> sender
Erstellen wir auch die Nur-Text-Version dieser Datei unter resources / views / mails / demo_plain.blade.php
.
Hallo $ demo-> receiver, Dies ist eine Demo-E-Mail zu Testzwecken! Es ist auch die HTML-Version. Werte für Demo-Objekte: Demo One: $ demo-> demo_one Demo Two: $ demo-> demo_two Werte, die von With-Methode: testVarOne: $ testVarOne testVarOne: $ testVarOne übergeben werden Vielen Dank $ demo-> sender
Das war also die versandfähige Klasse, die wir zur Verfügung haben, und wir haben dies noch nicht getan, da wir die Mail
Fassade, um tatsächlich Mails zu verschicken. Im nächsten Abschnitt erfahren Sie, wie Sie das verwenden können Mail
Fassade zum Senden von E-Mails mit der DemoEmail
Versandfähige Klasse, die gerade in diesem Abschnitt erstellt wurde.
In diesem Abschnitt erstellen wir ein Beispiel, um zu zeigen, wie Sie das verwenden können Versandfähig
Klasse, die im letzten Abschnitt erstellt wurde.
Erstellen Sie eine Controller-Datei unter app / Http / Controller / MailController.php
mit folgenden Inhalten.
demo_one = 'Demo One Value'; $ objDemo-> demo_two = 'Demo Two Value'; $ objDemo-> sender = 'SenderUserName'; $ objDemo-> receiver = 'ReceiverUserName'; Mail :: an ("[email protected]") -> send (neue DemoEmail ($ objDemo));
Es ist wichtig zu wissen, dass wir das aufgenommen haben Illuminate \ Support \ Facades \ Mail
Fassade, die zum Senden einer E-Mail verwendet wird. In dem senden
Methode ist die folgende Anweisung für das Senden einer E-Mail durch Initialisieren von verantwortlich App \ Mail \ DemoEmail
In erster Linie versandfertig.
Mail :: an ("[email protected]") -> send (neue DemoEmail ($ objDemo));
Das zu
Methode der Illuminate \ Support \ Facades \ Mail
Fassade gibt eine Instanz von zurück \ Illuminate \ Mail \ PendingMail
Klasse, die bereits einen entsprechenden Mailer enthält, der in der konfiguriert ist config / mail.php
Datei.
Und zum Schluss benutzen wir die senden
Methode der \ Illuminate \ Mail \ PendingMail
Klasse, die eine tatsächliche E-Mail sendet.
Um es zu testen, fügen wir eine verknüpfte Route in der hinzu routen / web.php
Datei.
// E-Mail-bezogene Routen Route :: get ('mail / send', 'MailController @ send');
Wenn dies der Fall ist, können Sie die URL http://your-laravel-site.com/mail/send ausführen, um zu sehen, ob sie wie erwartet funktioniert.
Wenn Sie dagegen Ihre E-Mail-Vorlagen schnell testen möchten, ohne tatsächliche E-Mails zu senden, gibt es in Laravel eine Einrichtung, mit der Sie alle ausgehenden E-Mails protokollieren können.
Um dies zu erreichen, müssen Sie den Wert von einstellen MAIL_DRIVER
zu Log
in dem config / mail.php
Datei. Als Nächstes können Sie die oben genannte URL ausführen und die Protokolldatei überprüfen, um zu prüfen, ob die E-Mail-Vorlage dort protokolliert wurde.
Wenn alles in Ordnung ist, sollten Sie eine E-Mail sehen, die beim angemeldet ist storage / logs / laravel.log
Datei.
Das ist so ziemlich alles, was die Mail-Funktion in Laravel betrifft, und das schließt auch diesen Artikel.
Heute haben wir die in Laravel integrierte Mail-API durchlaufen, die auch eine Vielzahl von Treibern unterstützt.
Ausgehend von grundlegenden Konzepten haben wir die mailable-Klasse implementiert, die in Laravel im weiteren Verlauf ein wesentliches Element der Mail-API ist. Am Ende testeten wir auch die Mail-Klasse, indem wir einen benutzerdefinierten Controller erstellten, um zu sehen, ob er tatsächlich funktioniert.
Wenn Sie gerade erst mit Laravel beginnen oder Ihr Wissen, Ihre Site oder Anwendung mit Erweiterungen erweitern möchten, haben wir eine Reihe von Möglichkeiten, die Sie in Envato Market lernen können.
Ich würde gerne Ihr Feedback in Form von Anfragen und Kommentaren über den untenstehenden Feed erfahren!