1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Contact\Model;
- use Magento\Framework\Mail\Template\TransportBuilder;
- use Magento\Framework\Translate\Inline\StateInterface;
- use Magento\Store\Model\StoreManagerInterface;
- use Magento\Framework\App\ObjectManager;
- use Magento\Framework\App\Area;
- class Mail implements MailInterface
- {
- /**
- * @var ConfigInterface
- */
- private $contactsConfig;
- /**
- * @var TransportBuilder
- */
- private $transportBuilder;
- /**
- * @var StateInterface
- */
- private $inlineTranslation;
- /**
- * @var StoreManagerInterface
- */
- private $storeManager;
- /**
- * Initialize dependencies.
- *
- * @param ConfigInterface $contactsConfig
- * @param TransportBuilder $transportBuilder
- * @param StateInterface $inlineTranslation
- * @param StoreManagerInterface|null $storeManager
- */
- public function __construct(
- ConfigInterface $contactsConfig,
- TransportBuilder $transportBuilder,
- StateInterface $inlineTranslation,
- StoreManagerInterface $storeManager = null
- ) {
- $this->contactsConfig = $contactsConfig;
- $this->transportBuilder = $transportBuilder;
- $this->inlineTranslation = $inlineTranslation;
- $this->storeManager = $storeManager ?: ObjectManager::getInstance()->get(StoreManagerInterface::class);
- }
- /**
- * Send email from contact form
- *
- * @param string $replyTo
- * @param array $variables
- * @return void
- */
- public function send($replyTo, array $variables)
- {
- /** @see \Magento\Contact\Controller\Index\Post::validatedParams() */
- $replyToName = !empty($variables['data']['name']) ? $variables['data']['name'] : null;
- $this->inlineTranslation->suspend();
- try {
- $transport = $this->transportBuilder
- ->setTemplateIdentifier($this->contactsConfig->emailTemplate())
- ->setTemplateOptions(
- [
- 'area' => Area::AREA_FRONTEND,
- 'store' => $this->storeManager->getStore()->getId()
- ]
- )
- ->setTemplateVars($variables)
- ->setFrom($this->contactsConfig->emailSender())
- ->addTo($this->contactsConfig->emailRecipient())
- ->setReplyTo($replyTo, $replyToName)
- ->getTransport();
- $transport->sendMessage();
- } finally {
- $this->inlineTranslation->resume();
- }
- }
- }
|