Senden von E-Mails mit Laravel 4 und Gmail

Der Versand von E-Mails ist für jede Webanwendung von entscheidender Bedeutung. Normalerweise wird eine E-Mail gesendet, um den Benutzer über Aktivitäten auf der Website zu informieren, z. B. wenn Aktualisierungen vorgenommen oder neue Freunde gefunden wurden. In diesem kurzen Tutorial zeige ich Ihnen, wie Sie E-Mails mit Gmail schnell aus einer Laravel-Beispielanwendung heraus versenden, indem Sie die Funktionalität erweitern, die wir in meinem letzten Tutorial, Authentication With Laravel 4, entwickelt haben.

Wir nehmen also diese Authentifizierungsanwendung (Sie können den Quellcode des vorherigen Tutorials auf Github herunterladen, um Ihnen einen Startpunkt zu geben), die wir mit dem letzten Mal beendet haben, und fügen eine neue Funktion hinzu, so dass wir immer, wenn sich ein Benutzer für die Website registriert, wir registrieren schicke ihnen eine Bestätigungs-E-Mail und begrüße sie in der App!


E-Mail-Konfiguration

Bevor wir E-Mails mit Laravel 4 versenden können, müssen Sie das konfigurieren app / config / mail.php Datei. In dieser Datei können wir die folgenden Optionen einstellen:

Möglichkeit Beschreibung
Treiber Der Mailing-Treiber, den Sie verwenden möchten. Standardmäßig ist dies auf SMTP eingestellt. Sie können es jedoch auch ändern, um stattdessen die PHP-Mail-Funktion oder Sendmail zu verwenden.
Wirt Dies ist die Hostadresse Ihres SMTP-Servers.
Hafen Ihr SMTP-Port.
von Auf diese Weise können Sie das Feld "Von" in Ihrer E-Mail festlegen, sodass alle E-Mails von derselben Adresse gesendet werden.
Verschlüsselung Dies ist das Verschlüsselungsprotokoll, das verwendet wird, wenn E-Mails gesendet werden.
Nutzername Dies ist Ihr SMTP-Benutzername.
Passwort Dies ist Ihr SMTP-Passwort.
sendmail Dies ist der Pfad, zu dem sich Sendmail auf dem Server befindet, wenn der sendmail-Treiber verwendet wird.
so tun als ob Wenn eingestellt auf wahr, E-Mails werden in einer Protokolldatei protokolliert, anstatt tatsächlich eine E-Mail-Nachricht zu senden.

Senden von E-Mails mit Google Mail

Für dieses Tutorial werde ich Google Mail zum Versenden meiner E-Mail-Nachrichten verwenden, da es sehr einfach zu verwenden ist. Um E-Mails mit Google Mail zu senden, benötigen Sie lediglich ein aktives Google Mail-Konto mit einem Benutzernamen und einem Kennwort. Ich werde dich mit allem anderen versorgen. Lassen Sie uns unsere bearbeiten app / config / mail.php Datei, die ungefähr so ​​aussieht (ich habe die Kommentare entfernt, um den Code kompakter zu gestalten):

 return array ('driver' => 'smtp', 'host' => 'smtp.gmail.com', 'port' => 587, 'from' => array ('address' => 'authapp @ awesomeauthapp.com.) ',' name '=>' Awesome Laravel 4 Auth App '),' Verschlüsselung '=>' tls ',' username '=>' your_gmail_username ',' password '=>' your_gmail_password ',' sendmail '=>' / usr / sbin / sendmail -bs ',' pretend '=> false,);

Hier habe ich die verlassen Treiber einstellen smtp. Ich habe das eingestellt Wirt benutzen smtp.gmail.com Dies ist der SMTP-Server von Google Mail. Ich habe das eingestellt Hafen zu 587, das von an eine falsche E-Mail-Adresse, die für unsere Anwendung passend klingt. Ich verließ das Verschlüsselung einstellen tls und schließlich möchten Sie dann Ihre eigene Google Mail eingeben Nutzername und Passwort für dein Konto und verlassen so tun als ob einstellen falsch.


Nachrichten senden

Beispielcode

Für diese Anwendung möchten wir ihnen bei jeder erfolgreichen Registrierung eine E-Mail senden, in der sie auf der Website begrüßt werden. Das Versenden von E-Mails mit Laravel erfolgt über die Mail :: send () Methode. Hier ist ein kleiner Code-Ausschnitt, zum Beispiel:

 Mail :: send ('folder.view', $ data, function ($ message) $ message-> an ('registered-user @ gmail. Com', 'Jon Doe') -> subject ('Willkommen bei der Laravel 4 Auth App! '););

Das erste Argument ist die Ansichtsdatei, die wir zum Formatieren unserer E-Mail-Nachricht verwenden möchten. Das zweite Argument sind alle Daten, die wir an diese Ansichtsdatei übergeben möchten. Das dritte Argument ist eine Schließung, die a akzeptiert $ message Objekt, das wir verwenden können, um dem Mailer mitzuteilen, an wen wir die E-Mail senden und was der Betreff dieser E-Mail sein wird. In dieser Schließung können Sie auch andere Optionen angeben, z. B. Anhänge usw. Dadurch wird die E-Mail an den Benutzer gesendet.

Ganz einfach richtig?

Senden von E-Mails nach erfolgreicher Registrierung

Lassen Sie uns jetzt unsere ändern UsersController's postCreate () Nehmen Sie an den Maßnahmen teil, die wir über das Versenden von E-Mails erhalten haben, um unseren Benutzern eine Willkommens-E-Mail zu senden, sobald sie sich für die App registrieren.

In unserem postCreate () Aktionen ob Anweisung, wo wir überprüfen, ob die Validierung bestanden hat, unmittelbar nachdem wir den Benutzer in der Datenbank gespeichert haben, fügen wir den folgenden Code hinzu:

 if ($ validator-> passt ()) $ user = neuer Benutzer; $ user-> firstname = Eingabe :: get ('firstname'); $ user-> lastname = Eingabe :: get ('lastname'); $ user-> email = Eingabe :: get ('email'); $ user-> password = Hash :: make (Eingabe :: get ('password')); $ user-> save (); Mail :: send ('users.mails.welcome', Array ('firstname' => Input :: get ('firstname')), Funktion ($ message) $ message-> an (Input :: get ('email) '), Input :: get (' firstname '). ". Input :: get (' lastname ')) -> subject (' Willkommen bei der Laravel 4 Auth App! ');); Umleitung :: an ( 'Benutzer / Login') -> mit ('Nachricht', 'Danke für die Registrierung!'); else return Redirect :: an ('Benutzer / Registrieren') -> mit ('Nachricht', 'Die folgenden Fehler sind aufgetreten ') -> withErrors ($ validator) -> withInput ();

Hier haben wir das angerufen Mail :: send () Methode und sagte ihm, ein zu verwenden Benutzer.Mails.Willkommen Datei ansehen. Wir übergeben dann ein Array als die Daten, die in der Ansichtsdatei verfügbar sein sollten. In diesem Fall haben wir nur den Vornamen des Benutzers unter Verwendung von gesendet Eingabe :: get ('Vorname') Methode. Als Nächstes erstellen wir unseren Abschluss und legen diesen fest, um die E-Mail an die E-Mail-Adresse des Benutzers zu senden. Der Name wird auch anhand des Vor- und Nachnamens des Benutzers aus dem Formular festgelegt. Zum Schluss geben wir diesem Thema nur ein ziemlich allgemeines Thema (Sie können das gewünschte Thema verwenden), so dass der Benutzer weiß, worum es bei dem ganzen Aufruhr geht.

Erstellen der E-Mail-Ansichtsdatei

Jetzt müssen wir unsere erstellen herzlich willkommen E-Mail-Ansichtsdatei. Unter App / Ansichten / Benutzer Erstellen Sie einen neuen Ordner mit dem Namen Mails und darin erstellen Sie eine neue Datei mit dem Namen welcome.blade.php und füge folgenden Code hinzu:

 

Hallo $ $ Vorname!

Wir möchten Sie persönlich zur Laravel 4 Authentication Application begrüßen. Danke für die Registrierung!

In dieser Ansichtsdatei haben wir nur ein paar grundlegende HTML-Anweisungen $ vorname Variable, die wir als Daten von unserem Controller an die Ansicht übergeben haben, um den Benutzer in der Anwendung zu begrüßen. Es gibt nicht viel zu tun, Sie können Ihre Ansichtsdateien für E-Mails genauso verwenden wie für jede andere Ansicht.

Lass es uns ausprobieren

Stellen Sie sicher, dass Sie Ihren Webserver mit starten Php Handwerker dienen und wir können besuchen localhost: 8000 / Benutzer / registrieren, Erstellen Sie dann einen neuen Benutzer:


… Und überprüfen Sie dann das E-Mail-Konto dieses Benutzers, um sicherzustellen, dass die E-Mail erfolgreich gesendet wurde:


Perfekt! Unsere E-Mail wurde gesendet.


Abschließend

Und das ist alles, um E-Mail-Nachrichten mit Laravel 4 und Gmail zu senden. Sie können Ihre E-Mail-Nachrichten natürlich so anpassen, dass Sie die E-Mail ansprechender gestalten möchten.

Dies ist die grundlegendste Methode zum Versenden von E-Mails mit Laravel. Dies kann Ihre App verlangsamen, da sie die E-Mail sendet. Sie haben jedoch andere Optionen. Sie verwenden weiterhin die E-Mail-Klasse von Laravel. Statt sie jedoch sofort zu senden, können Sie Ihre E-Mails in eine Warteschlange stellen, um sie im Hintergrund versenden zu können, ohne dass Ihre Benutzer warten müssen. Dieses Thema wird jedoch am besten für einen separaten Artikel gespeichert.

Weitere Informationen zum Senden von E-Mails mit Laravel finden Sie in der Online-Dokumentation. Danke fürs Lesen.