src/Model/Mailer.php line 44
<?php/*** Created by PhpStorm.* User: mirko* Date: 09/12/2018* Time: 10:51*/namespace App\Model;use App\Controller\ReturnImpostazioniServiceController;use App\Controller\ServiziController;use App\Entity\User;use Symfony\Component\Mailer\Exception\TransportExceptionInterface;use Symfony\Component\Mailer\Transport;use Symfony\Component\Mime\Email;use Symfony\Component\Mime\Part\DataPart;use Twig\Environment;/*** Class Mailer* @package App\Model*/class Mailer{/** @var \Symfony\Component\Mailer\Mailer $mailer */private $mailer;/** @var $imp ReturnImpostazioniServiceController */private $imp;/** @var $twig Environment */private $twig;/** @var $servizi ServiziController */private $servizi;private $mailCcnComunicazioni = array();/*** Mailer constructor.* @param ReturnImpostazioniServiceController $imp* @param Environment $twig* @param ServiziController $serviziController*/public function __construct(ReturnImpostazioniServiceController $imp, Environment $twig, ServiziController $serviziController){$this->imp = $imp;$this->twig = $twig;$this->servizi = $serviziController;// PARAMETRI POSTA DA SERVER$this->imp->caricaCacheImpostazioniInvioMail();$host = $this->imp->ritornaImpostazioneDaNome("MailHostSmtp");$porta = $this->imp->ritornaImpostazioneDaNome("MailPorta");$username = $this->imp->ritornaImpostazioneDaNome("MailUsername");$password = $this->imp->ritornaImpostazioneDaNome("MailPassword");$cifratura = $this->imp->ritornaImpostazioneDaNome("MailCrittografia");$mailCcnComunicazioni = $this->imp->ritornaImpostazioneDaNome('MailCcComunicazioni');if($mailCcnComunicazioni != ''){if(strpos($mailCcnComunicazioni, ';'))$this->mailCcnComunicazioni = explode(';', $mailCcnComunicazioni);else$this->mailCcnComunicazioni = array($mailCcnComunicazioni);}// Generate connection configurationif ($host != '' && $porta != '' ) {$dsn = "smtp://" . urlencode($username) . ":" . urlencode($password) . "@" . $host . ":" . $porta;if ($cifratura == 'ssl') {$dsn = $dsn . '??encryption=ssl&auth_mode=login&verify_peer=false&allow_self_signed=true';}$transport = Transport::fromDsn($dsn);$this->mailer = new \Symfony\Component\Mailer\Mailer($transport);}}/*** @param string $oggetto* @param string $body* @param string|array $to* @param array $cc* @param string $from* @param string $contentType* @param User|null $user* @param bool $incorporaBodyInTemplateMail* @param array|null $allegati*/public function SendMail($oggetto, $body, $to, $cc = array(), $from = "", $contentType = '', $incorporaBodyInTemplateMail = false, $user = null, $allegati = array()){if ($from == "") {$from = $this->imp->ritornaImpostazioneDaNome("IndirizzoMailFromInvioComunicazioni");}if ($contentType == '')$contentType = 'text/html';$falliti = array();$exTrovata = false;$errore = '';try {if ($incorporaBodyInTemplateMail) {$body = $this->twig->render('email/base_mail.html.twig', array('customBody' => $body));}$mail = (new Email());$mail->subject($oggetto)->from($from)->html($body);if (is_array($to) && count($to) > 0){foreach ($to as $e)$mail->addTo($e);}else{$mail->to($to);}if($allegati && count($allegati) > 0){foreach ($allegati as $a)$mail->addPart(new DataPart($a[0], $a[1]));}if (count($cc) > 0){foreach ($cc as $e)$mail->addCc($e);}if(count($this->mailCcnComunicazioni) > 0) {foreach ($this->mailCcnComunicazioni as $e)$mail->addBcc($e);}$this->servizi->logger->info("Invio messaggio");$this->mailer->send($mail);} catch (\Exception $ex) {$exTrovata = true;$errore = $ex->getMessage() . "\n" . $ex->getTraceAsString();$this->servizi->DebuggaException($ex, 'Errore invio mail: ');} catch (TransportExceptionInterface $e) {$exTrovata = true;$errore = $e->getMessage() . "\n" . $e->getTraceAsString();$this->servizi->DebuggaException($e, 'Errore invio mail: ');}$this->servizi->InserisciRegistroMail((count($falliti) > 0 || $exTrovata) ? false : true,$oggetto,$body,$from,$to,$user,$errore,count($falliti) > 0 ? "Failed: " . join(';', $falliti) : '',count($cc) > 0 ? join(';', $cc) : '','',$contentType);}}