2017-10-11 1 views
0

Je travaille sur des travaux de queue dans laravel v5.4. Maintenant, je veux envoyer un e-mail aux utilisateurs par e-mail fonction ultérieure. Voici ma fonction que j'utiliseLe travail de file d'attente n'est pas poussé dans laravel v5.4

public static function singleEmailQueueJob(){ 
     for($i=1; $i<=2; $i++){ 
      $time = $i * 10; 
      $data['email'] = '[email protected]'; 
      $data['name'] = "Rizwan_$time"; 
      $data['subject'] = 'Queue Job Testing->'.$i; 
      $data['verification_code'] = base64_encode($i.time()); 
      \Mail::later($time,'emails.password', $data, function ($m) use ($data) { 
       $m->from(CommonHelper::$email_info['admin_email'],CommonHelper::$email_info['site_title']); 
       $m->to($data['email'],$data['name']); 
       $m->subject($data['email']); 
      }); 
     } 
     echo "Email send successfully"; 
    } 

quand je lance cette fonction que je reçois l'erreur suivante dans l'exception

{"success":"false","message":"Only mailables may be queued."} 

dans le fichier .eve i mis

QUEUE_DRIVER=database 

et dans config/queue.php

'database' => [ 
      'driver' => 'database', 
      'table' => 'jobs', 
      'queue' => 'default', 
      'retry_after' => 90, 
     ], 

Je ne sais pas où est le problème dans le code. S'il vous plaît aider.

+0

Avez-vous exécuté ces deux commandes dans le terminal Php artisan migrate –

+0

et exécute aussi php artisan config: cache après avoir fait des changements dans .env –

+0

@ pdshah3690 oui j'ai couru ces deux commandes mais toujours face au même problème –

Répondre

0

Dans mon cas, j'ai créé le travail 'SendVerificationEmail' et j'appelle ce travail après l'inscription réussie de l'utilisateur comme ceci.

dispatch(new SendVerificationEmail($user)); 

Est-ce que vous distribuez aussi (votre_job) dans votre code ???

+0

Oui j'ai utilisé cette méthode mais cette méthode ne jette aucune exception et ne met aucun travail dans la file –

+0

Ce code insérera l'enregistrement dans les travaux table et lorsque vous exécutez php artisan queue: work commande, il va commencer à exécuter vos travaux. En cas d'échec, il supprime l'entrée de la table des jobs et l'insère dans la table failed_jobs. –

1

J'ai trouvé le problème en utilisant le code suivant

$date = Carbon::now()->addMinutes($time); 
Queue::later($date, new EmailSending($data)); 

Maintenant, je suis en mesure d'envoyer des e-mails en file d'attente

Merci de me aider

+0

après avoir fait ce code doit vérifier l'entrée dans les emplois et les tableaux jobs_failed –