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:
http://docker.team-opencaching.de:8025/
Achtung: Dieser Dienst funktioniert noch nicht aus der Testumgebung heraus!
Der Mailhog im mailhog-Docker selbst funktioniert allerdings. Entsprechend der Webseite https://akrabat.com/using-mailhog-via-docker-for-testing-email/ kann eine Testmail an den Mailhog via Telnet gesendet werden.
$ telnet localhost 1025 EHLO 19ft.com MAIL FROM:<from@19ft.com> RCPT TO:<to@19ft.com> DATA Subject: Hello World Hello World! . QUIT
Eine weitere Testmöglichkeit bietet das Programm swaks. Entsprechend https://www.linkedin.com/pulse/setting-up-smtp-mail-server-using-mailhog-docker-image-chopparapu ist dazu das Programm zu installieren und der folgende Befehl auszuführen.
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
MAILER_DSN=sendmail://default
In der Datei /htdocs_symfony/config/packages/dev/web_profiler.php den Eintrag ‘intercept_redirects’ auf 'true' setzen
$containerConfigurator->extension('web_profiler', [ 'toolbar' => true, 'intercept_redirects' => true ]);
Controller anlegen
Einen MailerController anlegen
<?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'); } }