This commit is contained in:
Baptiste Lemoine 2020-04-16 17:22:33 +02:00
parent bdd0325c82
commit e235986483
3 changed files with 53 additions and 43 deletions

2
.env
View File

@ -44,5 +44,5 @@ SUPPORT_EMAIL=admin_framadate@yopmail.com
###< symfony/swiftmailer-bundle ### ###< symfony/swiftmailer-bundle ###
###> symfony/mailer ### ###> symfony/mailer ###
# MAILER_DSN=smtp://localhost MAILER_DSN=smtp://localhost
###< symfony/mailer ### ###< symfony/mailer ###

View File

@ -1,4 +1,4 @@
# See https://symfony.com/doc/current/email/dev_environment.html # See https://symfony.com/doc/current/email/dev_environment.html
swiftmailer: swiftmailer:
# send all emails to a specific address # send all emails to a specific address
delivery_addresses: ['contact@cipherbliss.com'] # delivery_addresses: ['contact@cipherbliss.com']

View File

@ -9,12 +9,10 @@ use App\Entity\Owner;
use App\Entity\Poll; use App\Entity\Poll;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Exception; use Exception;
use http\Header;
use Symfony\Bridge\Twig\Mime\TemplatedEmail; use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\Mailer\Mailer; use Symfony\Component\Mailer\Mailer;
use Symfony\Component\Mailer\Transport\Smtp\EsmtpTransport; use Symfony\Component\Mailer\Transport\Smtp\EsmtpTransport;
use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\Email;
class MailService { class MailService {
@ -26,10 +24,12 @@ class MailService {
private $mailer; private $mailer;
// public function __construct( EntityManagerInterface $entityManager , Mailer $mailer) {
public function __construct( EntityManagerInterface $entityManager ) { public function __construct( EntityManagerInterface $entityManager ) {
$this->em = $entityManager; $this->em = $entityManager;
$transport = new EsmtpTransport(); $transport = new EsmtpTransport();
$this->mailer = new Mailer( $transport ); $this->mailer = new Mailer( $transport );
// $this->mailer = $mailer;
} }
/** /**
@ -38,7 +38,7 @@ class MailService {
* *
* @throws \Symfony\Component\Mailer\Exception\TransportExceptionInterface * @throws \Symfony\Component\Mailer\Exception\TransportExceptionInterface
*/ */
public function sendCreationMailAction( Owner $foundOwner, Poll $poll = null) { public function sendCreationMailAction( Owner $foundOwner, Poll $poll = null ) {
// anti spam , limit to every minute TODO // anti spam , limit to every minute TODO
@ -46,7 +46,7 @@ class MailService {
'owner' => $foundOwner, 'owner' => $foundOwner,
'from' => 'ne-pas-repondre@framadate-api.cipherbliss.com', 'from' => 'ne-pas-repondre@framadate-api.cipherbliss.com',
'poll' => $poll, 'poll' => $poll,
'title' => 'Création de sondage - ' . ($poll? $poll->getTitle() : $poll), 'title' => 'Création de sondage - ' . ( $poll ? $poll->getTitle() : $poll ),
'email_template' => 'emails/creation-mail.html.twig', 'email_template' => 'emails/creation-mail.html.twig',
]; ];
@ -92,6 +92,7 @@ class MailService {
'email_template' => 'emails/owner-list.html.twig', 'email_template' => 'emails/owner-list.html.twig',
]; ];
$this->sendMailWithVars( $config ); $this->sendMailWithVars( $config );
return 1; return 1;
} }
@ -99,9 +100,9 @@ class MailService {
public function sendCommentNotification( Comment $comment ) { public function sendCommentNotification( Comment $comment ) {
$config = [ $config = [
'comment' => $comment, 'comment' => $comment,
'owner' => $comment->getOwner(), 'owner' => $comment->getOwner(),
'title' => 'Framadate | commentaire de '.$comment->getOwner()->getPseudo(). ' _ sondage '. $comment->getPoll()->getTitle(), 'title' => 'Framadate | commentaire de ' . $comment->getOwner()->getPseudo() . ' _ sondage ' . $comment->getPoll()->getTitle(),
'email_template' => 'emails/comment-notification.html.twig', 'email_template' => 'emails/comment-notification.html.twig',
]; ];
@ -117,49 +118,58 @@ class MailService {
*/ */
public function sendMailWithVars( $config ) { public function sendMailWithVars( $config ) {
if(!$config['poll']){ if ( ! $config[ 'poll' ] ) {
$config['poll'] = new Poll(); $config[ 'poll' ] = new Poll();
} }
$emailChoicesTemplates = [ $emailChoicesTemplates = [
'creation_poll' => 'creation-mail.html.twig', 'creation_poll' => 'creation-mail.html.twig',
'edit_poll' => 'modification-notification-mail.html.twig', 'edit_poll' => 'modification-notification-mail.html.twig',
'creation_poll_admin' => 'author-mail.html.twig', 'creation_poll_admin' => 'author-mail.html.twig',
'owner_list' => 'owner-list.html.twig', 'owner_list' => 'owner-list.html.twig',
'expiration' => 'expiration-mail.html.twig', 'expiration' => 'expiration-mail.html.twig',
'creation_comment' => 'comment-notification.html.twig', 'creation_comment' => 'comment-notification.html.twig',
'creation_vote' => 'vote-notification.html.twig', 'creation_vote' => 'vote-notification.html.twig',
]; ];
$emailChoicesTitles = [ $emailChoicesTitles = [
'creation_poll' => 'Framadate | Création de sondage - lien public - ' . $config['poll']->getTitle(), 'creation_poll' => 'Framadate | Création de sondage - lien public - ' . $config[ 'poll' ]->getTitle(),
'edit_poll' => 'Framadate | Modification de sondage - ' . $config['poll']->getTitle(), 'edit_poll' => 'Framadate | Modification de sondage - ' . $config[ 'poll' ]->getTitle(),
'creation_poll_admin' => 'Framadate | Création de sondage - lien admin - ', 'creation_poll_admin' => 'Framadate | Création de sondage - lien admin - ',
'owner_list' => 'Framadate | Vos sondages créés', 'owner_list' => 'Framadate | Vos sondages créés',
'expiration' => 'Framadate | Notice d\'expiration du sondage '. $config['poll']->getTitle(), 'expiration' => 'Framadate | Notice d\'expiration du sondage ' . $config[ 'poll' ]->getTitle(),
'creation_comment' => 'Framadate | Commentaire de "' . $config['owner']->getPseudo() . '" - sondage ' . $config['poll']->getTitle(), 'creation_comment' => 'Framadate | Commentaire de "' . $config[ 'owner' ]->getPseudo() . '" - sondage ' . $config[ 'poll' ]->getTitle(),
'creation_vote' => 'Framadate | Vote de "' . $config['owner']->getPseudo() . '" - sondage ' . $config['poll']->getTitle(), 'creation_vote' => 'Framadate | Vote de "' . $config[ 'owner' ]->getPseudo() . '" - sondage ' . $config[ 'poll' ]->getTitle(),
]; ];
// $email = ( new Email() ) $email = ( new TemplatedEmail() )
// ->from( new Address( $config[ 'from' ] ) ) ->from( new Address( $config[ 'from' ] ) )
// ->setHeaders( [new Header('charset', 'UTF-8' )])
->subject( $config[ 'title' ] )
->to( $config[ 'owner' ]->getEmail() )
->htmlTemplate( $config[ 'email_template' ] )
->context( $config );
// $email = ( new \Swift_Mime_SimpleMessage($config[ 'from' ]) )
// ->setFrom( new Address( $config[ 'from' ] ) )
//// ->setHeaders( [new Header('charset', 'UTF-8' )]) //// ->setHeaders( [new Header('charset', 'UTF-8' )])
// ->subject( $config[ 'title' ] ) // ->setSubject( $config[ 'title' ] )
// ->to( $config[ 'owner' ]->getEmail() ) // ->setTo( $config[ 'owner' ]->getEmail() )
// ->htmlTemplate( $config[ 'email_template' ] ) // ->setBody("ble blah bleuh <strong> strong text </strong> swift mailer","text/html");
// ->context( $config );
$email = (new TemplatedEmail())
->from('fabien@example.com')
->to(new Address('ryan@example.com'))
->subject('Thanks for signing up!')
// path of the Twig template to render // $email = (new TemplatedEmail())
->htmlTemplate('emails/footer.html.twig') // ->from('fabien@example.com')
// ->to(new Address('ryan@example.com'))
// pass variables (name => value) to the template // ->subject('Thanks for signing up!')
->context([ //
'expiration_date' => new \DateTime('+7 days'), // // path of the Twig template to render
'username' => 'foo', // ->htmlTemplate('emails/footer.html.twig')
]) //
; // // pass variables (name => value) to the template
// ->context([
// 'expiration_date' => new \DateTime('+7 days'),
// 'username' => 'foo',
// ])
// ;
// send email // send email
return $this-> return $this->