Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Im Symfony existiert eine Option, per PHP versendete Emails anzeigen zu lassen. Die Folgende folgende Anleitung basiert auf

...

Die Dateien /htdocs_symfony/.env oder /htdocs_symfony/.env.test local um folgende Zeile erweitern

...

In der Datei /htdocs_symfony/config/packages/dev/web_profiler.php den Eintrag ‘intercept_redirects’ auf 'true' setzen. Damit werden allerdings alle Redirects unterbrochen, nicht nur die des unten aufgeführten MailerControllers!

Code Block
$containerConfigurator->extension('web_profiler', [
    'toolbar' => true,
    'intercept_redirects' => true
]);

...

Code Block
<?php

namespace Oc\Controller\Backend;

use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use Symfony\Component\Routing\Annotation\Route;

/**
 *
 */
class MailerController extends AbstractController
{
    /**
     * @param MailerInterface $mailer
     * @param LoggerInterface $logger
     *
     * @return Response
     * @throws TransportExceptionInterface
     * @Route("/email", name="email_sendmail")
     *
     * https://symfony.com/doc/4.1/email/dev_environment.html#viewing-from-the-web-debug-toolbar
     */
    public function sendEmail(MailerInterface $mailer, LoggerInterface $logger)
    : Response {
        $email = (new Email())
            ->from('hello@example.com')
            ->to('you@example.com')
            //->cc('cc@example.com')
            //->bcc('bcc@example.com')
            //->replyTo('fabien@example.com')
            //->priority(Email::PRIORITY_HIGH)
            ->subject('Time for Symfony Mailer!')
            ->text('Sending emails is fun again!')
            ->html('<p>See Twig integration for better HTML integration!</p>');

        $mailer->send($email);
        $logger->info('### Email gesendet ### ');

        return $this->redirectToRoute('backend_index_index');
    }
}

Mail senden und anzeigen

Die Route aus dem Controller aufrufen mittels

Code Block
http://try.docker.team-opencaching.de/backend/email

Die Funktion ‘sendEmail’ wird aufgerufen, die Mail versendet und der anschließende Redirect nicht ausgeführt. Meldung des unterbrochenen Redirects:

...

In der Symfonystatusleiste erscheint ein Briefsymbol, welches zur versendeten Email weiterleitet.

...

Die sich nun öffnende Seite zeigt alle Details zur empfangenen Email (oder mehreren, falls vorhanden)

...