Файл: vendor/laravel/framework/src/Illuminate/Mail/Transport/LogTransport.php
Строк: 141
<?php
namespace IlluminateMailTransport;
use IlluminateSupportStr;
use PsrLogLoggerInterface;
use SymfonyComponentMailerEnvelope;
use SymfonyComponentMailerSentMessage;
use SymfonyComponentMailerTransportTransportInterface;
use SymfonyComponentMimeRawMessage;
class LogTransport implements TransportInterface
{
/**
* The Logger instance.
*
* @var PsrLogLoggerInterface
*/
protected $logger;
/**
* Create a new log transport instance.
*
* @param PsrLogLoggerInterface $logger
* @return void
*/
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
/**
* {@inheritdoc}
*/
public function send(RawMessage $message, ?Envelope $envelope = null): ?SentMessage
{
$string = Str::of($message->toString());
if ($string->contains('Content-Type: multipart/')) {
$boundary = $string
->after('boundary=')
->before("rn")
->prepend('--')
->append("rn");
$string = $string
->explode($boundary)
->map($this->decodeQuotedPrintableContent(...))
->implode($boundary);
} elseif ($string->contains('Content-Transfer-Encoding: quoted-printable')) {
$string = $this->decodeQuotedPrintableContent($string);
}
$this->logger->debug((string) $string);
return new SentMessage($message, $envelope ?? Envelope::create($message));
}
/**
* Decode the given quoted printable content.
*
* @param string $part
* @return string
*/
protected function decodeQuotedPrintableContent(string $part)
{
if (! str_contains($part, 'Content-Transfer-Encoding: quoted-printable')) {
return $part;
}
[$headers, $content] = explode("rnrn", $part, 2);
return implode("rnrn", [
$headers,
quoted_printable_decode($content),
]);
}
/**
* Get the logger for the LogTransport instance.
*
* @return PsrLogLoggerInterface
*/
public function logger()
{
return $this->logger;
}
/**
* Get the string representation of the transport.
*
* @return string
*/
public function __toString(): string
{
return 'log';
}
}