Ich verwende den folgenden Code, um E-Mails in Laravel 5.1 zu senden
Mail::send('Project.Emails.Award', $data, function($message)
{
$message
->to('EmailAddress', 'EmailAddress')
->subject('hi');
});
Hier ist das Problem, dass die obige Funktion mindestens 5 Sekunden benötigt, um die Verarbeitung abzuschließen.
Frage : Gibt es asynchrone Bereitstellungsmethoden, bei denen ich nicht auf die Antwort warten muss?
Update für Bounty
Jemand kann schrittweise Richtlinien für das Einrichten der Warteschlange auf Localhost und GoDaddy bereitstellen.
2 Antworten
Je nachdem, welchen Mail-Treiber Sie verwenden oder verwenden müssen, gibt es möglicherweise andere Optionen, um die Leistung zu verbessern. Der effektivste Weg, um die Benutzeroberfläche ansprechbar zu halten, ist jedoch das Einreihen der E-Mail-Nachrichten.
Mit Ihrem Code wäre dies so einfach wie:
Mail::queue('Project.Emails.Award', $data, function($message)
{
$message
->to('EmailAddress', 'EmailAddress')
->subject('hi');
});
Sie müssen jedoch Warteschlangen eingerichtet haben, und bei einigen können Sie dies nicht ordnungsgemäß tun verwaltete Server.
Ich poste dies auf Anfrage von Helper und um einen API-Ansatz dafür zu demonstrieren.
Mailgun ist wahrscheinlich die beste Option, da Sie jeden Monat 10.000 E-Mails kostenlos erhalten und zahlen Sie danach für jede E-Mail eine kleine Gebühr.
Laravel wird mit den Treibern ausgeliefert, die bereits in Mailgun integriert werden können, und so ist der Einstieg wirklich einfach .
Zunächst müssen Sie sich nur für ein Mailgun-Konto registrieren und Ihre Domain einrichten:
- Registrieren Sie sich für Mailgun
- Richten Sie Ihre Domain auf Mailgun ein
- Überprüfen Sie die Domäne und aktualisieren Sie Ihre DNS-Einträge, um den Besitz nachzuweisen und die SPF- und DKIM-Authentifizierung zuzulassen
Sobald dies erledigt ist, müssen Sie nur noch Ihre Anwendung konfigurieren, um sie zu verwenden. Dieses Handbuch behandelt die Konfiguration von Mailgun auf Laravel ganz gut, aber im Wesentlichen Sie:
- Fügen Sie Guzzle hinzu, falls Sie es noch nicht haben (während Sie Ihre E-Mails über eine API an Mailgun senden, damit sie in die Warteschlange gestellt und gesendet werden)
composer require "guzzlehttp/guzzle=~5.0"
- Stellen Sie sicher, dass Ihre
config/services.php
-Datei mit der folgenden Konfiguration übereinstimmt, damit wir unsere Daten sicher aufbewahren und sie einfach in der.env
-Datei speichern können
D.h.
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
],
- Fügen Sie die erforderlichen Felder zu unserer
.env
- Datei hinzu und füllen Sie sie mit den richtigen Werten
Z.B
MAIL_DRIVER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=XXX
MAIL_PASSWORD=XXX
MAIL_ENCRYPTION=tls
MAILGUN_DOMAIN=THE-DOMAIN-SETUP-IN-MAILGUN
MAILGUN_SECRET=THE-API-KEY-FOR-DOMAIN
Sobald Sie alles eingerichtet haben, können Sie einfach den Befehl Mail::send()
verwenden, um E-Mails wie zuvor zu versenden. Dies erfolgt jedoch sofort (abhängig von Ihrem Server - meine ist ziemlich einfach und sendet E-Mails sofort ):
Mail::send('Project.Emails.Award', $data, function($message)
{
$message
->to('EmailAddress', 'EmailAddress')
->subject('hi');
});
Verwandte Fragen
Neue Fragen
php
PHP ist eine weit verbreitete, übergeordnete, dynamische, objektorientierte und interpretierte Skriptsprache, die hauptsächlich für die serverseitige Webentwicklung entwickelt wurde. Wird für Fragen zur PHP-Sprache verwendet.