E-Mail-Versand
- Einführung
- Versandfähige Klassen generieren
- Versandfähige Klassen schreiben
- Markdown-Mail-Klasse
- E-Mail senden
- Mailbare Klasse rendern
- Mailbare Klasse lokalisieren
- Mail & Lokale Entwicklung
- Veranstaltung
Einführung
Laravel basiert auf Die SwiftMailer-Bibliothek bietet eine saubere und erfrischende E-Mail-API. Laravel bietet Treiber für SMTP, Mailgun, SparkPost, Amazon SES, die mail
-Funktion von PHP und die sendmail
-Funktion, sodass Sie E-Mails schnell über lokale oder Cloud-Dienste versenden können.
Vorkenntnisse über Mail-Treiber
API-basierte Treiber wie Mailgun und SparkPost sind normalerweise einfacher und effizienter Schneller als SMTP-Server, also nutzen Sie diese Dienste, wenn Sie können. Für alle API-Treiber muss in der Anwendung die Guzzle-HTTP-Bibliothek installiert sein. Sie können sie über den Composer-Paketmanager installieren:
composer require guzzlehttp/guzzle
Mailgun-Treiber
Um den Mailgun-Treiber zu verwenden (Mailgun Die ersten 10.000 E-Mails sind kostenlos, weitere E-Mails sind kostenpflichtig). Installieren Sie zuerst Guzzle und konfigurieren Sie dann die Konfigurationsdatei config/mail.php
Setzen Sie die Option driver
auf mailgun
. Überprüfen Sie als Nächstes, ob die Konfigurationsdatei config/services.php
die folgenden Optionen enthält:
'mailgun' => [ 'domain' => 'your-mailgun-domain', 'secret' => 'your-mailgun-key', ],
Wenn Sie nicht die „US“ Mailgun-Region verwenden, können Sie die Terminalkonfiguration für Ihre Region in definieren services
Datei:
'mailgun' => [ 'domain' => 'your-mailgun-domain', 'secret' => 'your-mailgun-key', 'endpoint' => 'api.eu.mailgun.net', ],
Postmark-Treiber
Um den Postmark-Treiber zu verwenden, installieren Sie den SwiftMailer von Postmark über Composer:
composer require wildbit/swiftmailer-postmark
Als nächstes installieren Sie Guzzle und legen in der Konfigurationsdatei config / mail.php
die Optionen fest zu driver
. Überprüfen Sie abschließend, ob Ihre postmark
-Konfigurationsdatei die folgenden Optionen enthält: config / services.php
'postmark' => [ 'token' => 'your-postmark-token', ],SparkPost-TreiberUm den SparkPost-Treiber zu verwenden, installieren Sie zuerst Guzzle und konfigurieren Sie dann die Datei
Setzen Sie den Optionswert config/mail.php
auf driver
. Überprüfen Sie als Nächstes, ob die Konfigurationsdatei sparkpost
die folgenden Optionen enthält: config/services.php
'sparkpost' => [ 'secret' => 'your-sparkpost-key', ],Bei Bedarf können Sie auch den
API-Endpunkt mithilfe von
'sparkpost' => [ 'secret' => 'your-sparkpost-key', 'options' => [ 'endpoint' => 'https://api.eu.sparkpost.com/api/v1/transmissions', ], ],
der Datei composer.json
hinzufügen und dann den Befehl require
ausführen: composer update
"aws/aws-sdk-php": "~3.0"Als nächstes legen Sie
im fest Konfigurationsdatei 🎜> Option ist config/mail.php
. Überprüfen Sie dann, ob die Konfigurationsdatei driver
die folgenden Optionen enthält: ses
'ses' => [ 'key' => 'your-ses-key', 'secret' => 'your-ses-secret', 'region' => 'ses-region', // e.g. us-east-1 ],
config/services.php
Wenn Sie beim Ausführen von SES-Anfragen zusätzliche Optionen einschließen müssen, können Sie diese im < definieren 🎜>Konfiguration Array: SendRawEmail
'ses' => [ 'key' => 'your-ses-key', 'secret' => 'your-ses-secret', 'region' => 'ses-region', // e.g. us-east-1 'options' => [ 'ConfigurationSetName' => 'MyConfigurationSet', 'Tags' => [ [ 'Name' => 'foo', 'Value' => 'bar', ], ], ], ],
ses
options
Mailable-Klasse generierenIn Laravel kann jede von der Anwendung gesendete E-Mail als „mailable“ dargestellt werden " Klassen, diese Klassen werden im Verzeichnis gespeichert. Wenn Sie dieses Verzeichnis nicht sehen, machen Sie sich keine Sorgen, es wird generiert, wenn Sie Ihre erste mailbare Klasse mit dem Befehl
erstellen:php artisan make:mail OrderShipped
app/Mail
make:mail
Versandfähige Klassen schreibenAlle Konfigurationen für versendbare Klassen sind inNach Abschluss der Methode können Sie in dieser Methode mehrere Methoden aufrufen, z. B.
,, build
und from
, um den Inhalt der E-Mail zu konfigurieren und zu senden. subject
view
attach
Werfen wir einen Blick auf die Konfiguration des E-Mail-Absenders, oder anders gesagt, von wem die E-Mail kommt. Es gibt zwei Möglichkeiten, den Absender zu konfigurieren. Die erste Möglichkeit besteht darin, die Methode from
in der Methode
der Mailable-Klasse aufzurufen: /** * 构建消息. * * @return $this */ public function build(){ return $this->from('example@example.com') ->view('emails.orders.shipped'); }
build
from
Verwenden Sie die globale from
-Adresse
Wenn Ihre Anwendung jedoch für alle E-Mails dieselbe Absenderadresse verwendet, ist das Aufrufen der from
-Methode in jeder generierten mailbaren Klasse sehr umständlich. Stattdessen können Sie in der Konfigurationsdatei config/mail.php
eine globale Absenderadresse angeben, die verwendet wird, wenn keine andere from
-Adresse in der Mailable-Klasse angegeben ist:
'from' => ['address' => 'example@example.com', 'name' => 'App Name'],
Zusätzlich können Sie config / mail.php
Definieren global reply_to
in der Konfigurationsdatei Adresse:
'reply_to' => ['address' => 'example@example.com', 'name' => 'App Name'],
Konfigurationsansicht
Sie können <🎜 in der Methode build
der Mailable-Klasse verwenden > Methode zum Angeben, welche Ansichtsvorlage beim Rendern von E-Mail-Inhalten verwendet werden soll, da jede E-Mail normalerweise Blade verwendet Vorlagen zum Rendern von Inhalten, damit Sie beim Erstellen von E-Mail-HTML alle von der Blade-Vorlagen-Engine bereitgestellten Funktionen nutzen können: view
/** * 构建消息. * * @return $this */ public function build(){ return $this->view('emails.orders.shipped'); }
{Hinweis:} Sie können einNur-Text-E-MailWenn Sie eine Nur-Text-E-Mail definieren möchten, können Sie die Methode-Verzeichnis erstellen, um alle E-Mail-Vorlagen zu speichern , Natürlich können Sie die E-Mail-Vorlage auch an einem beliebigen anderen Ort im Verzeichnis
resources/views/emails
ablegen.resources/views
verwenden. Wie die Methode text
erhält die Methode view
einen Vorlagennamen, der zum Rendern des E-Mail-Inhalts verwendet wird. Sie können entweder eine Nur-Text-Nachricht oder HTML definieren Nachricht: text
/** * 构建消息. * * @return $this */ public function build(){ return $this->view('emails.orders.shipped') ->text('emails.orders.shipped_plain'); }Daten anzeigen über öffentliches Eigentum Oft müssen wir einige Daten an die HTML-Ansicht übergeben, die die E-Mail zur Verwendung rendert. Es gibt zwei Möglichkeiten, Daten an die Ansicht zu übergeben: Erstens werden alle in Ihrer mailbaren Klasse definierten öffentlichen Eigenschaften automatisch an die Ansicht übergeben. Daher können Sie Daten an den Konstruktor der mailbaren Klasse übergeben und die Daten als öffentliche Eigenschaft der Klasse festlegen:
<?php namespace App\Mail; use App\Order;use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class OrderShipped extends Mailable{ use Queueable, SerializesModels; /** * 订单实例. * * @var Order */ public $order; /** * 创建一个新的消息实例. * * @return void */ public function __construct(Order $order) { $this->order = $order; } /** * 构建消息. * * @return $this */ public function build() { return $this->view('emails.orders.shipped'); } }Nachdem die Daten auf die öffentliche Eigenschaft festgelegt wurden, werden sie automatisch in der Ansicht wirksam , damit Sie auf sie wie auf andere Daten in Blade-Vorlagen zugreifen können:
<div> Price: {{ $order->price }} </div>
Über die with
-Methode
Wenn Sie das Format der E-Mail-Daten anpassen möchten, bevor sie an die Vorlage gesendet werden, können Sie die Daten manuell über die with
-Methode an die Ansicht übergeben. Normalerweise müssen Sie weiterhin Daten durch den Konstruktor der mailbaren Klasse übergeben, aber dieses Mal müssen Sie die Daten als protected
- oder private
-Attribut festlegen, damit die Daten nicht automatisch in der Ansicht wirksam werden. Wenn dann die with
-Methode aufgerufen wird, übergeben Sie die Array-Daten an die Methode, damit die Daten in der Ansichtsvorlage wirksam werden:
<?php namespace App\Mail; use App\Order; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class OrderShipped extends Mailable{ use Queueable, SerializesModels; /** * 订单实例. * * @var Order */ protected $order; /** * 创建一个新的实例. * * @return void */ public function __construct(Order $order) { $this->order = $order; } /** * 构建消息. * * @return $this */ public function build() { return $this->view('emails.orders.shipped') ->with([ 'orderName' => $this->order->name, 'orderPrice' => $this->order->price, ]); } }
Nachdem die Daten über with
an die Ansicht übergeben wurden Methode wird es automatisch in der Ansicht wirksam, Sie können es also auch wie in Blade tun Die Vorlage greift auf die übergebenen Daten genauso zu wie andere Daten:
<div> Price: {{ $orderPrice }} </div>
Anhang
Um einen Anhang hinzuzufügen zur E-Mail: Verwenden Sie build
-Methoden innerhalb von attach
-Methoden. Die attach
-Methode akzeptiert den absoluten Pfad zur Datei als erstes Argument:
/** * Build the message. * * @return $this */ public function build() { return $this->view('emails.orders.shipped') ->attach('/path/to/file'); }
Wenn Sie eine Datei an eine Nachricht anhängen, können Sie 数组
auch als zweites Argument an die attach
-Methode übergeben Geben Sie den Anzeigenamen und/oder MIME an Geben Sie Folgendes ein:
/** * Build the message. * * @return $this */ public function build() { return $this->view('emails.orders.shipped') ->attach('/path/to/file', [ 'as' => 'name.pdf', 'mime' => 'application/pdf', ]); }
Anhang von der Festplatte hinzufügen
Wenn Sie eine Datei im Dateispeicher gespeichert haben, können Sie sie mit der Methode attachFromStorage
an eine E-Mail anhängen In der Mail:
/** * 构建消息。 * * @return $this */ public function build(){ return $this->view('email.orders.shipped') ->attachFromStorage('/path/to/file'); }
Sie können attachFromStorage
bei Bedarf verwenden Der zweite und dritte Parameter der Methode geben den Namen des Dateianhangs und andere Optionen an:
/** * 构建消息。 * * @return $this */ public function build(){ return $this->view('email.orders.shipped') ->attachFromStorage('/path/to/file', 'name.pdf', [ 'mime' => 'application/pdf' ]); }
Wenn Sie einen anderen Speicherdatenträger als den Standarddatenträger angeben müssen, können Sie die Methode attachFromStorageDisk
verwenden:
/** * 构建消息。 * * @return $this */ public function build(){ return $this->view('email.orders.shipped') ->attachFromStorageDisk('s3', '/path/to/file'); }
Rohdatenanhang
attachData
Bytedaten können als Anhang verwendet werden. Mit dieser Methode können Sie beispielsweise eine PDF-Datei an eine E-Mail anhängen, die im Speicher generiert, aber nicht auf der Festplatte gespeichert wird. Der erste Parameter der attachData
-Methode empfängt Rohbyte-Daten, der zweite Parameter ist der Dateiname und der dritte Parameter akzeptiert ein Array zur Angabe anderer Parameter:
/** * Build the message. * * @return $this */ public function build() { return $this->view('emails.orders.shipped') ->attachData($this->pdf, 'name.pdf', [ 'mime' => 'application/pdf', ]); }
Inline-Anhänge
Das Einbetten von Inline-Bildern in E-Mails ist jedoch oft umständlich, Laravel Bietet eine einfache Möglichkeit, ein Bild an eine Nachricht anzuhängen und die entsprechende CID zu erhalten. Inline-Bilder können mithilfe der $message
-Methode der embed
-Variablen in der E-Mail-Vorlage eingebettet werden. Laravel stellt die Variable $message
automatisch in allen E-Mail-Vorlagen zur Verfügung, Sie müssen sich keine Gedanken darüber machen, wie Sie sie manuell übergeben:
<body> Here is an image: <img src="{{ $message->embed($pathToImage) }}"> </body>
{note}
$message
ist in Textnachrichten nicht verfügbar, da es sich um Textnachrichten handelt Inline-Anhänge können nicht verwendet werden.
Originaldatenanhang einbetten
Wenn Sie bereits über die Originaldatenzeichenfolge verfügen, die Sie in die E-Mail-Vorlage einbetten möchten, können Sie die Methode $message
der Variablen embedData
verwenden:
<body> Here is an image from raw data: <img src="{{ $message->embedData($data, $name) }}"> </body>
Passen Sie SwiftMailer an Nachricht
Mailable
Mit der Methode withSwiftMessage
der Basisklasse können Sie einen Rückruf registrieren, der vor dem Senden der Nachricht aufgerufen wird. Die ursprüngliche SwiftMailer-Nachricht wird als Parameter des Rückrufs verwendet:
/** * 构建消息。 * * @return $this */ public function build(){ $this->view('emails.orders.shipped'); $this->withSwiftMessage(function ($message) { $message->getHeaders() ->addTextHeader('Custom-Header', 'HeaderValue'); }); }
Abschlag Formatierte Mailables-Klasse
Mit Markdown formatierte Mailable-Nachrichten können Sie von vorgefertigten Vorlagen und E-Mail-Benachrichtigungskomponenten in der Mailable-Klasse profitieren. Da Nachrichten in Markdown geschrieben werden, kann Laravel schöne, reaktionsfähige HTML-Vorlagennachrichten rendern und automatisch Textkopien erstellen.
Mailables-Klasse im Markdown-Format generieren
Um ein für die Markdown-Vorlage geeignetes Mailable zu generieren, können Sie den Code verwenden mit --markdown
Optionen make:mail
Artisan Befehl:
php artisan make:mail OrderShipped --markdown=emails.orders.shipped
Konfigurieren Sie dann das Mailable in seiner Methode build
und rufen Sie die Methode markdown
anstelle der Methode view
auf. Die markdown
-Methode akzeptiert einen Markdown-Vorlagennamen und ein optionales Array verfügbarer Namen in der Vorlage:
/** * Build the message. * * @return $this */ public function build(){ return $this->from('example@example.com') ->markdown('emails.orders.shipped'); }
Schreiben Sie eine Markdown-Nachricht
Markdown Mailable verwendet eine Kombination aus Blade-Komponente und Markdown-Syntax, sodass Sie es bequemer verwenden können Vorgefertigte Laravel-Komponenten zum Erstellen von E-Mail-Nachrichten:
@component('mail::message') # 订单已发货 Your order has been shipped! @component('mail::button', ['url' => $url]) View Order @endcomponent Thanks,<br> {{ config('app.name') }} @endcomponent
{Tipp} Verwenden Sie beim Schreiben von Markdown-E-Mails keine zusätzlichen Einrückungen. Der Markdown-Parser rendert den eingerückten Inhalt in Codeblöcke.
Schaltflächenkomponente
Die Schaltflächenkomponente rendert einen zentrierten Schaltflächenlink. Diese Komponente akzeptiert zwei Parameter, url
und optional color
. Die Farboptionen unterstützen primary
, success
und error
. Sie können Ihrer Nachricht so viele Schaltflächenkomponenten hinzufügen, wie Sie möchten:
@component('mail::button', ['url' => $url, 'color' => 'success']) View Order @endcomponent
Panel-Komponente
Panel-Komponente rendert einen bestimmten Textblock innerhalb eines Panels, ein Panel mit andere Nachrichten Die Hintergrundfarbe ist etwas anders. Ermöglicht das Zeichnen eines Warntextblocks:
@component('mail::panel') This is the panel content. @endcomponent
Tabellenkomponente
Mit der Tabellenkomponente können Sie Markdown-Tabellen in HTML-Tabellen konvertieren. Diese Komponente akzeptiert eine Markdown-Tabelle als Inhalt. Die Spaltenausrichtung unterstützt die standardmäßige Markdown-Tabellenausrichtungssyntax:
@component('mail::table') | Laravel | Table | Example | | ------------- |:-------------:| --------:| | Col 2 is | Centered | | | Col 3 is | Right-Aligned | | @endcomponent
Benutzerdefinierte Komponenten
Sie können alle Markdown-E-Mail-Komponenten in Ihre eigene Anwendung exportieren und sie als Vorlagen für benutzerdefinierte Komponenten verwenden. Um diese Komponenten zu exportieren, verwenden Sie den Befehl laravel-mail
Artisan mit dem Asset-Tag vendor:publish
:
php artisan vendor:publish --tag=laravel-mail
Dieser Befehl exportiert die Markdown-Mail-Komponenten in das Verzeichnis resources/views/vendor/mail
. Das Verzeichnis mail
enthält die Unterverzeichnisse html
und text
, die entsprechende Beschreibungen der verfügbaren Komponenten enthalten. Diese Komponenten können nach Ihren Wünschen angepasst werden.
Benutzerdefiniertes CSS
Nach dem Exportieren der Struktur befindet sich eine resources/views/vendor/mail/html/themes
-Datei im Verzeichnis default.css
. CSS kann aus dieser Datei angepasst werden und diese Stile werden automatisch in die HTML-Darstellung der Markdown-E-Mail-Nachricht eingefügt.
{tip} Wenn Sie ein komplett neues Theme für Markdown-Komponenten erstellen möchten, können Sie eine neue CSS-Datei im Verzeichnis
html/themes
erstellen und die Optiontheme
ändern Konfigurationsdatei.
E-Mail senden
Um eine E-Mail zu senden, verwenden Sie die Mail
-Methode von to
Fassade. to
Die Methode akzeptiert eine E-Mail-Adresse, eine Benutzerinstanz oder eine Benutzersammlung. Wenn Sie ein Objekt oder eine Sammlung von Objekten übergeben, verwendet der Mailer beim Festlegen der Empfänger automatisch deren Attribute email
und name
. Stellen Sie daher sicher, dass diese Attribute für das Objekt verfügbar sind. Sobald die Empfänger angegeben sind, kann eine mailbare Klasseninstanz an die send
-Methode übergeben werden:
<?php namespace App\Http\Controllers; use App\Order;use App\Mail\OrderShipped; use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; use App\Http\Controllers\Controller; class OrderController extends Controller{ /** * 发送给定的订单。 * * @param Request $request * @param int $orderId * @return Response */ public function ship(Request $request, $orderId) { $order = Order::findOrFail($orderId); // 发送订单... Mail::to($request->user())->send(new OrderShipped($order)); } }
Beim Senden einer Nachricht können mehr als nur Empfänger angegeben werden. Sie können CC- und BCC-Empfänger auch gleichzeitig durch Kettenaufrufe an „to“, „cc“ und „bcc“ angeben:
Mail::to($request->user()) ->cc($moreUsers) ->bcc($evenMoreUsers) ->send(new OrderShipped($order));
Ein Mailable rendern
Manchmal möchten Sie vielleicht den HTML-Inhalt eines Mailables erfassen, ohne ihn zu senden. Dies kann durch Aufrufen der render
-Methode des Mailables erreicht werden. Diese Methode gibt die berechnete Zeichenfolge nach dem Rendern des Mailables zurück:
$invoice = App\Invoice::find(1); return (new App\Mail\InvoicePaid($invoice))->render();
Preview Mailable in browser
Design mailable Beim Erstellen von Vorlagen Es ist praktisch, Mailables im Browser in der Vorschau anzuzeigen und darzustellen, genau wie Blade-Vorlagen. In diesem Fall können Sie mit Laravel alle Postsendungen direkt bei einer Routensperrung oder -kontrolle zurücksenden. Das zurückgegebene Mailing wird gerendert und im Browser angezeigt, und Sie können schnell eine Vorschau des Designs anzeigen, ohne es an eine echte E-Mail-Adresse senden zu müssen:
Route::get('mailable', function () { $invoice = App\Invoice::find(1); return new App\Mail\InvoicePaid($invoice); });
Mail-Warteschlange
E-Mail-Nachrichten zur Warteschlange hinzufügen
Da das Senden von E-Mail-Nachrichten die Antwortzeit der Anwendung erheblich verlängern kann, entscheiden sich viele Entwickler dafür, E-Mail-Nachrichten in die Warteschlange zu stellen und sie im Hintergrund zu senden. Laravel macht dies mit seiner integrierten einheitlichen Warteschlangen-API einfach. Um eine E-Mail-Nachricht zur Warteschlange hinzuzufügen, können Sie die Mail
-Methode der queue
-Fassade verwenden, nachdem Sie den Empfänger der Nachricht angegeben haben:
Mail::to($request->user()) ->cc($moreUsers) ->bcc($evenMoreUsers) ->queue(new OrderShipped($order));
Diese Methode verschiebt den Job automatisch in die Warteschlange, sodass die Nachricht angezeigt wird im Hintergrund gesendet. Bevor Sie diese Funktion verwenden, müssen Sie die Warteschlange konfigurieren:
Nachrichtenwarteschlange verzögern
Wenn Sie das Senden von E-Mail-Nachrichten in der Warteschlange verzögern möchten, können Sie later
verwenden Verfahren. later
Der erste Parameter der Methode gibt an, wann die Nachricht gesendet wird. DateTime
Beispiel:
$when = now()->addMinutes(10);Mail::to($request->user()) ->cc($moreUsers) ->bcc($evenMoreUsers) ->later($when, new OrderShipped($order));
Push in die angegebene Warteschlange
Due to All mailable Klassen, die mit dem Befehl make:mail
generiert wurden, verwenden das Merkmal IlluminateBusQueueable
, sodass Sie es auf jeder mailbaren Klasseninstanz aufrufen können onQueue
und onConnection
Methoden zum Angeben des Verbindungs- und Warteschlangennamens der Nachricht:
$message = (new OrderShipped($order)) ->onConnection('sqs') ->onQueue('emails');Mail::to($request->user()) ->cc($moreUsers) ->bcc($evenMoreUsers) ->queue($message);
Standardwarteschlange
Wenn eine mailbare Klasse in die Warteschlange gestellt werden soll, ist dies der Fall kann den ShouldQueue
-Vertrag für diese Klasse implementieren. Auf diese Weise wird das Mailable serialisiert, auch wenn Sie beim Senden die Methode send
aufrufen:
use Illuminate\Contracts\Queue\ShouldQueue; class OrderShipped extends Mailable implements ShouldQueue{ // }
Localized Mailable
Laravel ermöglicht Ihnen das Senden mit einem anderen Gebietsschema als der aktuellen Sprache Mailbar, behält das Gebietsschema bei, auch wenn es zur Warteschlange hinzugefügt wird.
Um dies zu erreichen, stellt die Mail
-Fassade die locale
-Methode zum Festlegen der Zielsprache bereit. Anwendungen, die Mailables formatieren, wechseln zu diesem Gebietsschema und kehren nach Abschluss der Formatierung zum ursprünglichen Gebietsschema zurück:
Mail::to($request->user())->locale('es')->send( new OrderShipped($order) );
Bevorzugtes Gebietsschema des Benutzers
Ja, die Anwendung speichert das Gebietsschema jedes Benutzers bevorzugtes Gebietsschema. Durch die Implementierung des HasLocalePreference
-Vertrags auf einem oder mehreren Modellen können Sie Laravel anweisen, beim Senden von E-Mails ein vorgespeichertes Gebietsschema zu verwenden: Das bevorzugte Gebietsschema wird automatisch verwendet. Daher ist es nicht erforderlich, die
use Illuminate\Contracts\Translation\HasLocalePreference; class User extends Model implements HasLocalePreference{ /** * 获取用户首选区域设置。 * * @return string */ public function preferredLocale() { return $this->locale; } }
locale
in Wenn Sie eine Anwendung entwickeln, die E-Mails sendet, möchten Sie möglicherweise keine E-Mails an eine Live-E-Mail-Adresse senden. Laravel bietet mehrere Möglichkeiten, das echte Senden während der lokalen Entwicklung zu „deaktivieren“.
Protokolltreiber
log
Der E-Mail-Treiber schreibt E-Mail-Nachrichten in das Protokoll, anstatt E-Mails zu senden, bereit zur Anzeige. Weitere Informationen zur Konfiguration der Anwendungsumgebung finden Sie in der Konfigurationsdokumentation.
Gemeinsame Konfiguration
Laravel bietet zusätzliche Lösungen zur Angabe gemeinsamer Empfänger für über Frames versendete E-Mails. Bei dieser Methode werden von der Anwendung generierte E-Mails an die angegebene Adresse gesendet und ersetzen die beim Senden der Nachricht angegebene tatsächliche Adresse. Dies kann mit Hilfe der config/mail.php
-Option der to
-Konfigurationsdatei erreicht werden:
Mail::to($request->user())->send(new OrderShipped($order));
Mailtrap
Abschließend können Sie die verwenden Mailtrap-Dienst und smtp
Fahrer sendet E-Mail-Nachricht an Ein „virtuelles“ Postfach, sodass E-Mail-Nachrichten in einem echten E-Mail-Client angezeigt werden können. Der Vorteil dieser Methode besteht darin, dass Sie die endgültige E-Mail tatsächlich im Nachrichtenviewer von Mailtrap anzeigen können.
Ereignisse
Laravel löst beim Versenden von E-Mail-Nachrichten zwei Ereignisse aus. Das MessageSending
-Ereignis wird ausgelöst, bevor die Nachricht gesendet wird, und das MessageSent
-Ereignis wird ausgelöst, nachdem die Nachricht gesendet wurde. Denken Sie daran, dass diese Ereignisse ausgelöst werden, wenn die E-Mail gesendet wird und nicht, wenn sie in der Warteschlange steht. Ein Zuhörer für diese Veranstaltung kann unter EventServiceProvider
registriert werden:
'to' => [ 'address' => 'example@example.com', 'name' => 'Example' ],