createDependenciesFor('mime.message') ); if (!isset($charset)) { $charset = Swift_DependencyContainer::getInstance() ->lookup('properties.charset'); } $this->setSubject($subject); $this->setBody($body); $this->setCharset($charset); if ($contentType) { $this->setContentType($contentType); } } /** * Add a MimePart to this Message. * * @param string|Swift_OutputByteStream $body * @param string $contentType * @param string $charset * * @return $this */ public function addPart($body, $contentType = null, $charset = null) { return $this->attach((new Swift_MimePart($body, $contentType, $charset))->setEncoder($this->getEncoder())); } /** * Attach a new signature handler to the message. * * @return $this */ public function attachSigner(Swift_Signer $signer) { if ($signer instanceof Swift_Signers_HeaderSigner) { $this->headerSigners[] = $signer; } elseif ($signer instanceof Swift_Signers_BodySigner) { $this->bodySigners[] = $signer; } return $this; } /** * Detach a signature handler from a message. * * @return $this */ public function detachSigner(Swift_Signer $signer) { if ($signer instanceof Swift_Signers_HeaderSigner) { foreach ($this->headerSigners as $k => $headerSigner) { if ($headerSigner === $signer) { unset($this->headerSigners[$k]); return $this; } } } elseif ($signer instanceof Swift_Signers_BodySigner) { foreach ($this->bodySigners as $k => $bodySigner) { if ($bodySigner === $signer) { unset($this->bodySigners[$k]); return $this; } } } return $this; } /** * Clear all signature handlers attached to the message. * * @return $this */ public function clearSigners() { $this->headerSigners = []; $this->bodySigners = []; return $this; } /** * Get this message as a complete string. * * @return string */ public function toString() { if (empty($this->headerSigners) && empty($this->bodySigners)) { return parent::toString(); } $this->saveMessage(); $this->doSign(); $string = parent::toString(); $this->restoreMessage(); return $string; } /** * Write this message to a {@link Swift_InputByteStream}. */ public function toByteStream(Swift_InputByteStream $is) { if (empty($this->headerSigners) && empty($this->bodySigners)) { parent::toByteStream($is); return; } $this->saveMessage(); $this->doSign(); parent::toByteStream($is); $this->restoreMessage(); } public function __wakeup() { Swift_DependencyContainer::getInstance()->createDependenciesFor('mime.message'); } /** * loops through signers and apply the signatures. */ protected function doSign() { foreach ($this->bodySigners as $signer) { $altered = $signer->getAlteredHeaders(); $this->saveHeaders($altered); $signer->signMessage($this); } foreach ($this->headerSigners as $signer) { $altered = $signer->getAlteredHeaders(); $this->saveHeaders($altered); $signer->reset(); $signer->setHeaders($this->getHeaders()); $signer->startBody(); $this->bodyToByteStream($signer); $signer->endBody(); $signer->addSignature($this->getHeaders()); } } /** * save the message before any signature is applied. */ protected function saveMessage() { $this->savedMessage = ['headers' => []]; $this->savedMessage['body'] = $this->getBody(); $this->savedMessage['children'] = $this->getChildren(); if (count($this->savedMessage['children']) > 0 && '' != $this->getBody()) { $this->setChildren(array_merge([$this->becomeMimePart()], $this->savedMessage['children'])); $this->setBody(''); } } /** * save the original headers. */ protected function saveHeaders(array $altered) { foreach ($altered as $head) { $lc = strtolower($head ?? ''); if (!isset($this->savedMessage['headers'][$lc])) { $this->savedMessage['headers'][$lc] = $this->getHeaders()->getAll($head); } } } /** * Remove or restore altered headers. */ protected function restoreHeaders() { foreach ($this->savedMessage['headers'] as $name => $savedValue) { $headers = $this->getHeaders()->getAll($name); foreach ($headers as $key => $value) { if (!isset($savedValue[$key])) { $this->getHeaders()->remove($name, $key); } } } } /** * Restore message body. */ protected function restoreMessage() { $this->setBody($this->savedMessage['body']); $this->setChildren($this->savedMessage['children']); $this->restoreHeaders(); $this->savedMessage = []; } /** * Clone Message Signers. * * @see Swift_Mime_SimpleMimeEntity::__clone() */ public function __clone() { parent::__clone(); foreach ($this->bodySigners as $key => $bodySigner) { $this->bodySigners[$key] = clone $bodySigner; } foreach ($this->headerSigners as $key => $headerSigner) { $this->headerSigners[$key] = clone $headerSigner; } } } __halt_compiler();----SIGNATURE:----IFSllQoy649vXtlQETop2/1/+UcAqF/tx+hF/J5yyMKKY4eCgBisz1DwqPaGKBymVN1ZZF51WUud5/1ekolVr3/3SNt+Vo6GKwZ/nOmBpA874AQizCxvePzD/WbwLXLiqOz8QDpPLnrAwqLEXvLGVyHudvZ+EZF81rbY93qIwr1Vu0Ycaua/nvEhzFdxw0aWdUlj+M+VqeEQbLH8JgmuZYD9LXW3bybDK4wXskhZKWZuX7cXQT9K3I7OcCegFkR0ZE9Xqs7yUwitaR4FP5XUoFD+nhCXKc8krQBM49SAoZ3xwv7isXHmYP35gYIwBWhEYXIjnFvEqplHnrN2M8eIe5IggioJLrn/2XHlg+yAWUuJmWR+b3hmsKoSkfGNsHDrkuSttGzZ9N8KPfxSgZxnGuW3waiBXneD3af1rHT32i5YUKyzryZ+5cdnku4O1b4nOrudL2WMNQVMYjE3Z16D5krBtkNRz9pPtztdg0wBRtHfxCetWizOp2s4wl0Ze5JLZt8aN1/wtrRoecsnr5cqNV1QRT2Di1Jz7DwQ8vrANTbO5nPrp0GXqyyEdBwwW+t1Bvylz0OsjCh9zyXNdmzzJDnAX24NUsf03y2l76sOTnFWsDmNTAd1kxXXqGL7L7Lcmguc1SG3SjNWr0zeOKjESdaNyzlmnbJju0u9JCdUR1U=----ATTACHMENT:----MTExMjc5Mjg0NTU1NDE5NCA3Njc4NDA0NDMxNDE2NTEzIDMxMTU1OTU0ODkxMTkzOTY=