Ich verwende Laravel Benachrichtigungen mit ShouldQueue Implementierung E-Mail an externe Benutzer zu senden, wie folgt:Laravel 5.4 Externe Benutzer E-Mail-Benachrichtigungswarteschlange nicht
App \ Http \ Controllers \ ActionController.php:
...
use App\Notifications\ExternalUserNotified;
class ActionController extends Controller
{
...
public function send()
{
$notified_user = (new User)->forceFill([
'name'=> 'External User',
'email'=> '[email protected]'
]);
$notified_user->notify(new ExternalUserNotified($data));
...
}
}
App/Benachrichtigungen/ExternalUserNotified.php Klasse:
...
class ExternalUserNotified extends Notification implements ShouldQueue
{
use Queueable;
private $data;
public function __construct($data)
{
$this->data = $data;
}
public function via($notifiable)
{
return ['mail'];
}
public function toMail($notifiable)
{
return (new MailMessage)
->subject('Test Subject')
->line('Dear User,')
->line('Test notification content...')
->line('Thank you for using our application!');
}
}
Die Warteschlange Job erfolgreich erstellt wurde, und führen Sie mit dem Befehl ohne Fehler:
php artisan queue:work
Allerdings gab es keine E-Mail an [email protected] gesendet (I MailTrap zum Testen verwende). Die E-Mail wurde erfolgreich gesendet, wenn die Benachrichtigungsklasse "ShouldQueue" nicht implementiert.
Alle Bedingungen funktionieren, wenn Benutzerinstanz eine Modellinstanz ist:
$notified_user = User::find(1);
$notified_user->notify(new ExternalUserNotified($data));
Ich vermutete, dass die temporäre neue Benutzerinstanz:
$notified_user = (new User)->forceFill([
'name'=> 'External User',
'email'=> '[email protected]'
]);
nicht von der Warteschlange erkannt werden konnte.
Vielen Dank und vielen Dank im Voraus für Ihre Hilfe.
das gleiche Problem hier. – roll