|
Apache/2.4.41 (Ubuntu) Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) server ip : 62.171.164.128 | your ip : 127.0.0.1 safemode OFF > / home / a / home / dev2.destoffenstraat.com / app / code / Amasty / ExportPro / Utils / Email / |
Filename | /home/a/home/dev2.destoffenstraat.com/app/code/Amasty/ExportPro/Utils/Email/TransportBuilder.php |
Size | 4.16 kb |
Permission | rw-r--r-- |
Owner | root : root |
Create time | 21-Aug-2025 12:26 |
Last modified | 14-Jun-2025 23:39 |
Last accessed | 23-Aug-2025 05:40 |
Actions | edit | rename | delete | download (gzip) |
View | text | code | image |
<?php
declare(strict_types=1);
/**
* @author Amasty Team
* @copyright Copyright (c) Amasty (https://www.amasty.com)
* @package Export Pro for Magento 2 (System)
*/
namespace Amasty\ExportPro\Utils\Email;
use Magento\Framework\Mail\EmailMessageInterface;
use Magento\Framework\Mail\EmailMessageInterfaceFactory;
use Magento\Framework\Mail\MessageInterface;
use Magento\Framework\Mail\MessageInterfaceFactory;
use Magento\Framework\Mail\MimeInterface;
use Magento\Framework\Mail\MimeMessageInterfaceFactory;
use Magento\Framework\Mail\Template\FactoryInterface;
use Magento\Framework\Mail\Template\SenderResolverInterface;
use Magento\Framework\Mail\Template\TransportBuilder as ParentTransportBuilder;
use Magento\Framework\Mail\TransportInterfaceFactory;
use Magento\Framework\ObjectManagerInterface;
class TransportBuilder extends ParentTransportBuilder
{
/**
* @var array
*/
private $attachments = [];
/**
* @var array
*/
private $messageData;
/**
* @var EmailMessageInterfaceFactory
*/
private $emailMessageInterfaceFactory;
/**
* @var MimeMessageInterfaceFactory
*/
private $mimeMessageInterfaceFactory;
/**
* @var MessageInterfaceFactory
*/
private $messageFactory;
public function __construct(
FactoryInterface $templateFactory,
MessageInterface $message,
MessageInterfaceFactory $messageFactory,
SenderResolverInterface $senderResolver,
ObjectManagerInterface $objectManager,
TransportInterfaceFactory $mailTransportFactory
) {
parent::__construct(
$templateFactory,
$message,
$senderResolver,
$objectManager,
$mailTransportFactory
);
$this->message = $message;
$this->messageFactory = $messageFactory;
if (interface_exists(EmailMessageInterface::class)) {
$this->message = $objectManager->create(MailMessage::class);
$this->messageFactory = $objectManager->create(MailMessageFactory::class);
$this->mimeMessageInterfaceFactory = $objectManager->create(MimeMessageInterfaceFactory::class);
$this->emailMessageInterfaceFactory = $objectManager->create(EmailMessageInterfaceFactory::class);
}
}
public function addAttachment(string $content, string $name, string $type = 'text/plain'): self
{
$attachment = $this->message->createAttachment(
$content,
$type,
MimeInterface::DISPOSITION_ATTACHMENT,
MimeInterface::ENCODING_BASE64,
$name
);
$this->attachments[] = $attachment;
return $this;
}
protected function prepareMessage(): self
{
parent::prepareMessage();
if ($this->mimeMessageInterfaceFactory !== null) {
$parts = $this->message->getBody()->getParts();
$this->messageData['body'] = $this->mimeMessageInterfaceFactory->create(
['parts' => array_merge($parts, $this->attachments)]
);
$this->messageData['to'] = $this->message->getTo();
$this->messageData['from'] = $this->message->getFrom();
if (!isset($this->messageData['subject'])) {
$this->messageData['subject'] = $this->message->getSubject();
}
$this->message = $this->emailMessageInterfaceFactory->create($this->messageData);
}
return $this;
}
public function setSubject(string $subject): self
{
$this->messageData['subject'] = $subject;
return $this;
}
public function setFromByScope($from, $scopeId = null): self
{
$from = $this->_senderResolver->resolve($from, $scopeId);
if ($this->mimeMessageInterfaceFactory !== null) {
return parent::setFromByScope($from, $scopeId);
} else {
$this->message->setFrom($from['email'], $from['name']);
}
return $this;
}
protected function reset(): self
{
parent::reset();
$this->message = $this->messageFactory->create();
$this->messageData = [];
$this->attachments = [];
return $this;
}
}
declare(strict_types=1);
/**
* @author Amasty Team
* @copyright Copyright (c) Amasty (https://www.amasty.com)
* @package Export Pro for Magento 2 (System)
*/
namespace Amasty\ExportPro\Utils\Email;
use Magento\Framework\Mail\EmailMessageInterface;
use Magento\Framework\Mail\EmailMessageInterfaceFactory;
use Magento\Framework\Mail\MessageInterface;
use Magento\Framework\Mail\MessageInterfaceFactory;
use Magento\Framework\Mail\MimeInterface;
use Magento\Framework\Mail\MimeMessageInterfaceFactory;
use Magento\Framework\Mail\Template\FactoryInterface;
use Magento\Framework\Mail\Template\SenderResolverInterface;
use Magento\Framework\Mail\Template\TransportBuilder as ParentTransportBuilder;
use Magento\Framework\Mail\TransportInterfaceFactory;
use Magento\Framework\ObjectManagerInterface;
class TransportBuilder extends ParentTransportBuilder
{
/**
* @var array
*/
private $attachments = [];
/**
* @var array
*/
private $messageData;
/**
* @var EmailMessageInterfaceFactory
*/
private $emailMessageInterfaceFactory;
/**
* @var MimeMessageInterfaceFactory
*/
private $mimeMessageInterfaceFactory;
/**
* @var MessageInterfaceFactory
*/
private $messageFactory;
public function __construct(
FactoryInterface $templateFactory,
MessageInterface $message,
MessageInterfaceFactory $messageFactory,
SenderResolverInterface $senderResolver,
ObjectManagerInterface $objectManager,
TransportInterfaceFactory $mailTransportFactory
) {
parent::__construct(
$templateFactory,
$message,
$senderResolver,
$objectManager,
$mailTransportFactory
);
$this->message = $message;
$this->messageFactory = $messageFactory;
if (interface_exists(EmailMessageInterface::class)) {
$this->message = $objectManager->create(MailMessage::class);
$this->messageFactory = $objectManager->create(MailMessageFactory::class);
$this->mimeMessageInterfaceFactory = $objectManager->create(MimeMessageInterfaceFactory::class);
$this->emailMessageInterfaceFactory = $objectManager->create(EmailMessageInterfaceFactory::class);
}
}
public function addAttachment(string $content, string $name, string $type = 'text/plain'): self
{
$attachment = $this->message->createAttachment(
$content,
$type,
MimeInterface::DISPOSITION_ATTACHMENT,
MimeInterface::ENCODING_BASE64,
$name
);
$this->attachments[] = $attachment;
return $this;
}
protected function prepareMessage(): self
{
parent::prepareMessage();
if ($this->mimeMessageInterfaceFactory !== null) {
$parts = $this->message->getBody()->getParts();
$this->messageData['body'] = $this->mimeMessageInterfaceFactory->create(
['parts' => array_merge($parts, $this->attachments)]
);
$this->messageData['to'] = $this->message->getTo();
$this->messageData['from'] = $this->message->getFrom();
if (!isset($this->messageData['subject'])) {
$this->messageData['subject'] = $this->message->getSubject();
}
$this->message = $this->emailMessageInterfaceFactory->create($this->messageData);
}
return $this;
}
public function setSubject(string $subject): self
{
$this->messageData['subject'] = $subject;
return $this;
}
public function setFromByScope($from, $scopeId = null): self
{
$from = $this->_senderResolver->resolve($from, $scopeId);
if ($this->mimeMessageInterfaceFactory !== null) {
return parent::setFromByScope($from, $scopeId);
} else {
$this->message->setFrom($from['email'], $from['name']);
}
return $this;
}
protected function reset(): self
{
parent::reset();
$this->message = $this->messageFactory->create();
$this->messageData = [];
$this->attachments = [];
return $this;
}
}