Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Zwei Varianten, mit denen Email in der Testumgebung getestet werden können, sind der MailHog oder die im Symfony eingebaute Emailanzeige

MailHog

Um die Mails anzusehen, die innerhalb des Dockers verschickt werden, muss der Mailhog aufgerufen werden:

...

Code Block
swaks --to jerry@eduami.org --server localhost:1025 --body "Hello Jerry!" --header "Subject: Party!"

Im Symfony integrierte Emailanzeige

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

Vorbereitung

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

Code Block
MAILER_DSN=sendmail://default

In der Datei /htdocs_symfony/config/packages/dev/web_profiler.php den Eintrag ‘intercept_redirects’ auf 'true' setzen

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

Controller anlegen

Einen MailerController anlegen

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