![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/Mail/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\Mail; use Laminas\Mail\Exception\InvalidArgumentException as LaminasInvalidArgumentException; use Magento\Framework\App\ObjectManager; use Magento\Framework\Mail\Exception\InvalidArgumentException; use Laminas\Mail\Address as LaminasAddress; use Laminas\Mail\AddressList; use Laminas\Mime\Message as LaminasMimeMessage; use Psr\Log\LoggerInterface; /** * Magento Framework Email message * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class EmailMessage extends Message implements EmailMessageInterface { /** * @var MimeMessageInterfaceFactory */ private $mimeMessageFactory; /** * @var AddressFactory */ private $addressFactory; /** * @var LoggerInterface|null */ private $logger; /** * @param MimeMessageInterface $body * @param array $to * @param MimeMessageInterfaceFactory $mimeMessageFactory * @param AddressFactory $addressFactory * @param Address[]|null $from * @param Address[]|null $cc * @param Address[]|null $bcc * @param Address[]|null $replyTo * @param Address|null $sender * @param string|null $subject * @param string|null $encoding * @param LoggerInterface|null $logger * @throws InvalidArgumentException * @SuppressWarnings(PHPMD.ExcessiveParameterList) * @SuppressWarnings(PHPMD.NPathComplexity) * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function __construct( MimeMessageInterface $body, array $to, MimeMessageInterfaceFactory $mimeMessageFactory, AddressFactory $addressFactory, ?array $from = null, ?array $cc = null, ?array $bcc = null, ?array $replyTo = null, ?Address $sender = null, ?string $subject = '', ?string $encoding = 'utf-8', ?LoggerInterface $logger = null ) { parent::__construct($encoding); $mimeMessage = new LaminasMimeMessage(); $this->logger = $logger ?: ObjectManager::getInstance()->get(LoggerInterface::class); $mimeMessage->setParts($body->getParts()); $this->zendMessage->setBody($mimeMessage); if ($subject) { $this->zendMessage->setSubject($subject); } if ($sender) { $this->zendMessage->setSender($sender->getEmail(), $sender->getName()); } if (count($to) < 1) { throw new InvalidArgumentException('Email message must have at list one addressee'); } if ($to) { $this->zendMessage->setTo($this->convertAddressArrayToAddressList($to)); } if ($replyTo) { $this->zendMessage->setReplyTo($this->convertAddressArrayToAddressList($replyTo)); } if ($from) { $this->zendMessage->setFrom($this->convertAddressArrayToAddressList($from)); } if ($cc) { $this->zendMessage->setCc($this->convertAddressArrayToAddressList($cc)); } if ($bcc) { $this->zendMessage->setBcc($this->convertAddressArrayToAddressList($bcc)); } $this->mimeMessageFactory = $mimeMessageFactory; $this->addressFactory = $addressFactory; } /** * @inheritDoc */ public function getEncoding(): string { return $this->zendMessage->getEncoding(); } /** * @inheritDoc */ public function getHeaders(): array { return $this->zendMessage->getHeaders()->toArray(); } /** * @inheritDoc */ public function getFrom(): ?array { return $this->convertAddressListToAddressArray($this->zendMessage->getFrom()); } /** * @inheritDoc */ public function getTo(): array { return $this->convertAddressListToAddressArray($this->zendMessage->getTo()); } /** * @inheritDoc */ public function getCc(): ?array { return $this->convertAddressListToAddressArray($this->zendMessage->getCc()); } /** * @inheritDoc */ public function getBcc(): ?array { return $this->convertAddressListToAddressArray($this->zendMessage->getBcc()); } /** * @inheritDoc */ public function getReplyTo(): ?array { return $this->convertAddressListToAddressArray($this->zendMessage->getReplyTo()); } /** * @inheritDoc */ public function getSender(): ?Address { /** @var LaminasAddress $laminasSender */ if (!$laminasSender = $this->zendMessage->getSender()) { return null; } return $this->addressFactory->create( [ 'email' => $laminasSender->getEmail(), 'name' => $laminasSender->getName() ] ); } /** * @inheritDoc */ public function getMessageBody(): MimeMessageInterface { return $this->mimeMessageFactory->create( ['parts' => $this->zendMessage->getBody()->getParts()] ); } /** * @inheritDoc */ public function getBodyText(): string { return $this->zendMessage->getBodyText(); } /** * @inheritDoc */ public function toString(): string { return $this->zendMessage->toString(); } /** * Converts AddressList to array * * @param AddressList $addressList * @return Address[] */ private function convertAddressListToAddressArray(AddressList $addressList): array { $arrayList = []; foreach ($addressList as $address) { $arrayList[] = $this->addressFactory->create( [ 'email' => $address->getEmail(), 'name' => $address->getName() ] ); } return $arrayList; } /** * Converts MailAddress array to AddressList * * @param Address[] $arrayList * @return AddressList */ private function convertAddressArrayToAddressList(array $arrayList): AddressList { $laminasAddressList = new AddressList(); foreach ($arrayList as $address) { try { $laminasAddressList->add($address->getEmail(), $address->getName()); } catch (LaminasInvalidArgumentException $e) { $this->logger->warning( 'Could not add an invalid email address to the mailing queue', ['exception' => $e] ); continue; } } return $laminasAddressList; } }