SendEmailMessageHandler.php 1.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
<?php

namespace App\MessageHandler;

use App\Message\SendEmailMessage;
use App\Repository\PostRepository;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
use Symfony\Component\Mime\Email;

final class SendEmailMessageHandler implements MessageHandlerInterface
{
    /**
     * @var PostRepository
     */
    private PostRepository $postRepository;
    /**
     * @var ParameterBagInterface
     */
    private ParameterBagInterface $parameterBag;
    /**
     * @var MailerInterface
     */
    private MailerInterface $mailer;

    public function __construct(PostRepository $postRepository, ParameterBagInterface $parameterBag, MailerInterface $mailer)
    {
        $this->postRepository = $postRepository;
        $this->parameterBag = $parameterBag;
        $this->mailer = $mailer;
    }

    public function __invoke(SendEmailMessage $message)
    {
        $postId = $message->getPostId();
        $post = $this->postRepository->find($postId);

        $email = (new Email())
            ->from($this->parameterBag->get('send_email'))
            ->to($this->parameterBag->get('editor_email'), $this->parameterBag->get('checker_email'))
            ->subject('有新的文章<'.$post->getTitle().'>发布了,请检查。')
            ->text('有新的文章<'.$post->getTitle().'>发布了,请检查。');
        sleep(10);
        $this->mailer->send($email);
    }
}