Вход Регистрация
Файл: 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"$part2);

        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';
    }
}
Онлайн: 0
Реклама