SenderBuilder.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Model\Order\Email;
  7. use Magento\Framework\Mail\Template\TransportBuilder;
  8. use Magento\Framework\Mail\Template\TransportBuilderByStore;
  9. use Magento\Sales\Model\Order\Email\Container\IdentityInterface;
  10. use Magento\Sales\Model\Order\Email\Container\Template;
  11. /**
  12. * Sender Builder
  13. */
  14. class SenderBuilder
  15. {
  16. /**
  17. * @var Template
  18. */
  19. protected $templateContainer;
  20. /**
  21. * @var IdentityInterface
  22. */
  23. protected $identityContainer;
  24. /**
  25. * @var TransportBuilder
  26. */
  27. protected $transportBuilder;
  28. /**
  29. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  30. *
  31. * @param Template $templateContainer
  32. * @param IdentityInterface $identityContainer
  33. * @param TransportBuilder $transportBuilder
  34. * @param TransportBuilderByStore $transportBuilderByStore
  35. */
  36. public function __construct(
  37. Template $templateContainer,
  38. IdentityInterface $identityContainer,
  39. TransportBuilder $transportBuilder,
  40. TransportBuilderByStore $transportBuilderByStore = null
  41. ) {
  42. $this->templateContainer = $templateContainer;
  43. $this->identityContainer = $identityContainer;
  44. $this->transportBuilder = $transportBuilder;
  45. }
  46. /**
  47. * Prepare and send email message
  48. *
  49. * @return void
  50. */
  51. public function send()
  52. {
  53. $this->configureEmailTemplate();
  54. $this->transportBuilder->addTo(
  55. $this->identityContainer->getCustomerEmail(),
  56. $this->identityContainer->getCustomerName()
  57. );
  58. $copyTo = $this->identityContainer->getEmailCopyTo();
  59. if (!empty($copyTo) && $this->identityContainer->getCopyMethod() == 'bcc') {
  60. foreach ($copyTo as $email) {
  61. $this->transportBuilder->addBcc($email);
  62. }
  63. }
  64. $transport = $this->transportBuilder->getTransport();
  65. $transport->sendMessage();
  66. }
  67. /**
  68. * Prepare and send copy email message
  69. *
  70. * @return void
  71. */
  72. public function sendCopyTo()
  73. {
  74. $copyTo = $this->identityContainer->getEmailCopyTo();
  75. if (!empty($copyTo) && $this->identityContainer->getCopyMethod() == 'copy') {
  76. foreach ($copyTo as $email) {
  77. $this->configureEmailTemplate();
  78. $this->transportBuilder->addTo($email);
  79. $transport = $this->transportBuilder->getTransport();
  80. $transport->sendMessage();
  81. }
  82. }
  83. }
  84. /**
  85. * Configure email template
  86. *
  87. * @return void
  88. */
  89. protected function configureEmailTemplate()
  90. {
  91. $this->transportBuilder->setTemplateIdentifier($this->templateContainer->getTemplateId());
  92. $this->transportBuilder->setTemplateOptions($this->templateContainer->getTemplateOptions());
  93. $this->transportBuilder->setTemplateVars($this->templateContainer->getTemplateVars());
  94. $this->transportBuilder->setFromByScope(
  95. $this->identityContainer->getEmailIdentity(),
  96. $this->identityContainer->getStore()->getId()
  97. );
  98. }
  99. }