TransportPlugin.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace Dotdigitalgroup\Email\Plugin;
  3. use Magento\Framework\Mail\TransportInterface;
  4. /**
  5. * SMTP mail transport.
  6. *
  7. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  8. */
  9. class TransportPlugin
  10. {
  11. /**
  12. * @var \Dotdigitalgroup\Email\Model\Mail\SmtpTransportAdapter
  13. */
  14. private $smtpTransportAdapter;
  15. /**
  16. * @var \Dotdigitalgroup\Email\Helper\Transactional
  17. */
  18. private $helper;
  19. /**
  20. * @var \Dotdigitalgroup\Email\Helper\Data
  21. */
  22. private $dataHelper;
  23. /**
  24. * @var \Magento\Framework\Registry
  25. */
  26. private $registry;
  27. /**
  28. * TransportPlugin constructor.
  29. *
  30. * @param \Dotdigitalgroup\Email\Model\Mail\SmtpTransportAdapter $smtpTransportAdapter
  31. * @param \Dotdigitalgroup\Email\Helper\Transactional $helper
  32. * @param \Dotdigitalgroup\Email\Helper\Data $dataHelper
  33. * @param \Magento\Framework\Registry $registry
  34. */
  35. public function __construct(
  36. \Dotdigitalgroup\Email\Model\Mail\SmtpTransportAdapter $smtpTransportAdapter,
  37. \Dotdigitalgroup\Email\Helper\Transactional $helper,
  38. \Dotdigitalgroup\Email\Helper\Data $dataHelper,
  39. \Magento\Framework\Registry $registry
  40. ) {
  41. $this->smtpTransportAdapter = $smtpTransportAdapter;
  42. $this->helper = $helper;
  43. $this->dataHelper = $dataHelper;
  44. $this->registry = $registry;
  45. }
  46. /**
  47. * @param TransportInterface $subject
  48. * @param \Closure $proceed
  49. * @throws \Exception
  50. *
  51. * @return null
  52. */
  53. public function aroundSendMessage(
  54. TransportInterface $subject,
  55. \Closure $proceed
  56. ) {
  57. $storeId = $this->registry->registry('transportBuilderPluginStoreId');
  58. if ($this->helper->isEnabled($storeId)) {
  59. try {
  60. $this->smtpTransportAdapter->send($subject, $storeId);
  61. } catch (\Exception $e) {
  62. $this->dataHelper->log("TransportPlugin send exception: " . $e->getMessage());
  63. return $proceed();
  64. }
  65. } else {
  66. return $proceed();
  67. }
  68. }
  69. }