|
|
@@ -2,6 +2,8 @@ |
|
|
|
|
|
|
|
namespace Lc\ShopBundle\Services ; |
|
|
|
|
|
|
|
use Lc\ShopBundle\Context\MerchantUtilsInterface; |
|
|
|
use Lc\ShopBundle\Model\Merchant; |
|
|
|
use Mailjet\MailjetSwiftMailer\SwiftMailer\MailjetTransport; |
|
|
|
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; |
|
|
|
use Twig\Environment; |
|
|
@@ -9,36 +11,61 @@ use Twig\Environment; |
|
|
|
class MailUtils |
|
|
|
{ |
|
|
|
const SUBJECT = 'subject' ; |
|
|
|
const SUBJECT_PREFIX = 'subject-prefix' ; |
|
|
|
const TO_EMAIL = 'to-email' ; |
|
|
|
const TO_NAME = 'to-name' ; |
|
|
|
const FROM_EMAIL = 'from-email' ; |
|
|
|
const FROM_NAME = 'from-name' ; |
|
|
|
const CONTENT_TEMPLATE = 'content-template' ; |
|
|
|
const CONTENT_DATA = 'content-data' ; |
|
|
|
const ATTACHMENT_DATA = 'attachment-data' ; |
|
|
|
const ATTACHMENT_FILENAME = 'attachment-filename' ; |
|
|
|
const ATTACHMENT_CONTENT_TYPE = 'attachment-content-type' ; |
|
|
|
|
|
|
|
protected $transport ; |
|
|
|
protected $templating ; |
|
|
|
protected $parameterBag ; |
|
|
|
protected $merchantUtils ; |
|
|
|
|
|
|
|
public function __construct(MailjetTransport $mailjetTransport, Environment $templating,ParameterBagInterface $parameterBag) |
|
|
|
public function __construct(MailjetTransport $mailjetTransport, Environment $templating,ParameterBagInterface $parameterBag, MerchantUtilsInterface $merchantUtils) |
|
|
|
{ |
|
|
|
$this->transport = $mailjetTransport ; |
|
|
|
$this->templating = $templating ; |
|
|
|
$this->parameterBag = $parameterBag ; |
|
|
|
$this->merchantUtils = $merchantUtils ; |
|
|
|
} |
|
|
|
|
|
|
|
public function send($params = []) |
|
|
|
{ |
|
|
|
$message = new \Swift_Message($params[self::SUBJECT]); |
|
|
|
$merchantCurrent = $this->merchantUtils->getMerchantCurrent() ; |
|
|
|
|
|
|
|
$merchantConfigEmailFrom = $merchantCurrent->getMerchantConfig('email-from') ; |
|
|
|
$emailFrom = isset($params[self::FROM_EMAIL]) ? $params[self::FROM_EMAIL] : $merchantConfigEmailFrom ; |
|
|
|
|
|
|
|
$merchantConfigEmailFromName = $merchantCurrent->getMerchantConfig('email-from-name') ; |
|
|
|
$emailFromName = isset($params[self::FROM_NAME]) ? $params[self::FROM_NAME] : $merchantConfigEmailFromName ; |
|
|
|
|
|
|
|
$merchantConfigEmailSubjectPrefix = $merchantCurrent->getMerchantConfig('email-subject-prefix') ; |
|
|
|
$emailSubjectPrefix = isset($params[self::SUBJECT_PREFIX]) ? $params[self::SUBJECT_PREFIX] : $merchantConfigEmailSubjectPrefix ; |
|
|
|
if($emailSubjectPrefix && strlen($emailSubjectPrefix)) { |
|
|
|
$emailSubjectPrefix .= ' ' ; |
|
|
|
} |
|
|
|
|
|
|
|
$message = new \Swift_Message($emailSubjectPrefix.$params[self::SUBJECT]); |
|
|
|
$message->addTo( |
|
|
|
$params[self::TO_EMAIL], |
|
|
|
isset($params[self::TO_NAME]) ? $params[self::TO_NAME] : null) |
|
|
|
->addFrom( |
|
|
|
isset($params[self::FROM_EMAIL]) ? $params[self::FROM_EMAIL] : $this->parameterBag->get('app.noreply_email'), |
|
|
|
isset($params[self::FROM_NAME]) ? $params[self::FROM_NAME] : $this->parameterBag->get('app.site_name')) |
|
|
|
->addFrom($emailFrom, $emailFromName) |
|
|
|
->setBody($this->templating->render($params[self::CONTENT_TEMPLATE].'-html.html.twig', $params[self::CONTENT_DATA]), 'text/html') |
|
|
|
->addPart($this->templating->render($params[self::CONTENT_TEMPLATE].'-text.html.twig', $params[self::CONTENT_DATA])) |
|
|
|
; |
|
|
|
->addPart($this->templating->render($params[self::CONTENT_TEMPLATE].'-text.html.twig', $params[self::CONTENT_DATA])); |
|
|
|
|
|
|
|
if(isset($params[self::ATTACHMENT_DATA]) && isset($params[self::ATTACHMENT_FILENAME]) && isset($params[self::ATTACHMENT_CONTENT_TYPE])) { |
|
|
|
$message->attach(\Swift_Attachment::newInstance( |
|
|
|
$params[self::ATTACHMENT_DATA], |
|
|
|
$params[self::ATTACHMENT_FILENAME], |
|
|
|
$params[self::ATTACHMENT_CONTENT_TYPE] |
|
|
|
)); |
|
|
|
} |
|
|
|
|
|
|
|
$this->transport->send($message) ; |
|
|
|
} |