Я пытаюсь отправить электронное письмо с приложением, но время истекло.Я решил настроить очередь, так как мне нужно было в любом случае, но теперь она просто обрабатывает без отправки.
$ php artisan queue:work
[2018-10-16 13:42:21][1] Processing: App\Jobs\MailQueue
[2018-10-16 13:42:22][1] Processed: App\Jobs\MailQueue
[2018-10-16 13:42:22][2] Processing: App\Mail\NotificationMail
[2018-10-16 13:42:55][3] Processing: App\Mail\NotificationMail
[2018-10-16 13:43:57][4] Processing: App\Mail\NotificationMail
[2018-10-16 13:44:59][5] Processing: App\Mail\NotificationMail
[2018-10-16 13:46:01][6] Processing: App\Mail\NotificationMail
[2018-10-16 13:47:04][7] Processing: App\Mail\NotificationMail
[2018-10-16 13:48:06][8] Processing: App\Mail\NotificationMail
[2018-10-16 13:49:09][9] Processing: App\Mail\NotificationMail
[2018-10-16 13:50:15][10] Processing: App\Mail\NotificationMail
[2018-10-16 13:51:19][11] Processing: App\Mail\NotificationMail
[2018-10-16 13:52:22][12] Processing: App\Mail\NotificationMail
[2018-10-16 13:53:24][13] Processing: App\Mail\NotificationMail
[2018-10-16 13:54:26][14] Processing: App\Mail\NotificationMail
[2018-10-16 13:55:29][15] Processing: App\Mail\NotificationMail
[2018-10-16 13:56:34][16] Processing: App\Mail\NotificationMail
[2018-10-16 13:57:36][17] Processing: App\Mail\NotificationMail
Я использую mailtrap:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=*****************
MAIL_PASSWORD=*****************
MAIL_ENCRYPTION=null
Мой драйвер очереди настроен на базу данных:
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
],
Вот мой класс Job:
<?php
namespace App\Jobs;
use App\Mail\NotificationMail;
use App\Models\Event;
use App\Models\Notification;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Mail;
class MailQueue implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $event;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(Event $event)
{
$this->event = $event;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
Mail::to($this->event->siteContacts[0]->email)->queue(
new NotificationMail(Notification::where('slug', 'event-flyer')->first(), $this->event)
);
}
}
Вот как я пытаюсь отправить почту после того, как что-то прикрепил:
public function build()
{
$this->notification->body = $this->parse(
merge_tags($this->notification->body), $this->notification->body
);
$path = null;
if ($this->notification->slug == 'event-flyer') {
$path = "events/{$this->event->agency->id}/{$this->event->id}/flyer.pdf";
$pdf = PDF::loadView('event.print', ['event' => $this->event]);
Storage::put($path, $pdf->output());
}
return $this->view('email.notification')
->attach($path)
->subject("MSU Notification: {$this->event->group_name_location}")
->with(['event' => $this->event, 'notification' => $this->notification]);
}
Я нахожусь в настройке xampp и default_socket_timeout=60
.Я должен также упомянуть, что, если я удаляю вызов attach
, он отправляет почту нормально.