Отправка писем с очередями в Ларваэль - PullRequest
0 голосов
/ 30 мая 2018

В первый раз, используя очередь в laravel, у меня есть простая страница контактной формы, на которой пользователь отправляет информацию, и я пытаюсь использовать очередь для получения этой информации.Я уверен, что мои настройки неверны, потому что, когда я запускаю очередь, это говорит об обработке.Мой вопрос: почему мои данные не отправляются и как правильно отправлять данные в массиве.


AskEmailController.php

<?php

namespace App\Http\Controllers;
use App\Jobs\HelpEmailJob;
use Illuminate\Support\Facades\Mail;
use Illuminate\Http\Request;
use Carbon\Carbon;
class AskEmailController extends Controller
{

    public function askemail()
    {
        return view('help.question');
    }
    public function store(Request $request)
    {



                  HelpEmailJob::dispatch()
                 ->delay(Carbon::now()->addSeconds(5));
    }

}

HelpEmailJob

namespace App\Jobs;
use App\Mail\HelpEmailMailable;
use Illuminate\Support\Facades\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

class HelpEmailJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {

    Mail::to('mikeshasaco@gmail.com')->queue(new HelpEmailMailable());
    }
}

HelpEmailMailiable

<?php

namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class HelpEmailMailable extends Mailable
{
    use Queueable, SerializesModels;
    protected $data;
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($data)
    {
        $this->$data = $data;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {

            $data = array(
                'sirname' => $this->data['sirname'],
                'email' => $this->data['email'],
                'bodymessage' => $this->data['bodymessage'],
            );
        return $this->view('help.contactinfo')
        ->with([
            'data' =>$data,
        ]);
    }
}

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете напрямую отправлять почту с вашего контроллера следующим образом:

class AskEmailController extends Controller
{
    public function store(Request $request)
    {
        Mail::to('mikeshasaco@gmail.com')->send(new HelpEmailMailable);
    }
}

вместо использования задания.И чтобы создать очередь электронной почты по умолчанию, реализовав интерфейс ShouldQueue, подобный следующему:

class HelpEmailMailable extends Mailable implements ShouldQueue
{
  ...
}

Убедитесь, что ваша очередь работает, когда вы тестируете ее, и всегда перезапускайте ее после внесения изменений в код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...