Jump to content

How to send custom_args to Sendgrid in new Laravel Mail


fastsol

Recommended Posts

I have a Laravel 8 site that works perfectly but I was trying to update it to Laravel 9.  The issue I'm having is trying to figure out how to send custom_args or personalizations with the new Symfony Mailer compared to the old SwiftMailer Laravel has traditionally used.  I have searched and searched for code online but have found nothing at all that helps convert this.

I'll be honest, I don't really even understand how the old code works exactly or where I got the info from.  All I know is it works.  I need to send custom_args with the mail so Sendgrid can send them back in webhooks.  Without this functionality, a big part of my site will not function.

If anyone knows how to convert this old code or tell me how to do it a different way, I would so greatly appreciate it.  If you can give me some actual code or examples that get this working, I am happy to donate to you.

The code below is an event listener on the Laravel MessageSending event.  I currently use this package for the "driver" in Laravel s-ichikawa/laravel-sendgrid-driver.  The code seems to indicate that I'm sending an attachment or something, but that seems kind of weird to me.  I know very little about the SwiftMailer and even less about the new SymfonyMailer.

<?php

namespace App\Listeners;

use App\Helpers\Mail\MailTrackerSetup;
use Illuminate\Mail\Events\MessageSending;
use Sichikawa\LaravelSendgridDriver\SendGrid;
use Sichikawa\LaravelSendgridDriver\Transport\SendgridTransport;

/**
 * Class SetSendgridCustomArg
 * @package App\Listeners
 */
class SetSendgridCustomArg
{
    use SendGrid {
        sgEncode as encode;
    }

    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Handle the event.
     *
     * @param  MessageSending  $event
     * @return void
     */
    public function handle(MessageSending $event)
    {
        $args = [
            'personalizations' => [
                [
                    'custom_args' => [
                        'email_subject' => $event->message->getSubject(),
                        'domain' => settings('site_name'),
                    ],
                ],
            ],
        ];

        $args['personalizations'][0]['custom_args'] = array_merge( $args['personalizations'][0]['custom_args'], (new MailTrackerSetup($event->data))->getTrackingDetails());

        $args = $this->mergeCustomArgs($event, $args);

        $event->message->embed(new \Swift_Image(static::sgEncode($args), SendgridTransport::SMTP_API_NAME));
    }

    /**
     * @param $event
     * @param $args
     * @return mixed
     */
    private function mergeCustomArgs($event, $args)
    {
        if(count($event->message->getChildren())){
            foreach($event->message->getChildren() as $child){
                if($child instanceof \Swift_Image){
                    $params = json_decode($child->getBody(), true);

                    if(isset($params['personalizations'][0]['custom_args'])){
                        foreach($params['personalizations'][0]['custom_args'] as $key => $custom_arg) {
                            $args['personalizations'][0]['custom_args'][$key] = $custom_arg;
                        }
                    }
                }
            }
        }

        return $args;
    }
}

This is a dump of what the personalization array and $event->message are after this code runs. The part of the SwiftMessage that holds the personalization array if waaaay towards the bottom of the dump.  You'll see it in a json string.

array:1 [
  "personalizations" => array:1 [
    0 => array:1 [
      "custom_args" => array:4 [
        "email_subject" => "Remote Start Quote 102cmlzspagej5p - UNDEFINED UNDEFINED UNDEFINED anything"
        "domain" => "Remotely Started"
        "tracking_id" => 13165
        "tracking_model" => "App\Models\Quote\Quote"
      ]
    ]
  ]
]
Swift_Message�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Message.php#L16�\^�]8;;�\ {#5087
  -headerSigners: []
  -bodySigners: []
  -savedMessage: []
  #userFormat: null
  #userCharset: "utf-8"
  #userDelSp: null
  -nestingLevel: 4096
  -headers: Swift_Mime_SimpleHeaderSet�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderSet.php#L16�\^�]8;;�\ {#5089
    -factory: Swift_Mime_SimpleHeaderFactory�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderFactory.php#L18�\^�]8;;�\ {#5090
      -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5091
        #charStream: Swift_CharacterStream_NgCharacterStream�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterStream\NgCharacterStream.php#L16�\^�]8;;�\ {#5080
          -charReader: null
          -charReaderFactory: Swift_CharacterReaderFactory_SimpleCharacterReaderFactory�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterReaderFactory\SimpleCharacterReaderFactory.php#L16�\^�]8;;�\ {#5081}
          -charset: "utf-8"
          -datas: ""
          -datasSize: 0
          -map: null
          -mapType: 0
          -charCount: 0
          -currentPos: 0
        }
        #filter: null
        #safeMap: array:68 [
          97 => "a"
          98 => "b"
          99 => "c"
          100 => "d"
          101 => "e"
          102 => "f"
          103 => "g"
          104 => "h"
          105 => "i"
          106 => "j"
          107 => "k"
          108 => "l"
          109 => "m"
          110 => "n"
          111 => "o"
          112 => "p"
          113 => "q"
          114 => "r"
          115 => "s"
          116 => "t"
          117 => "u"
          118 => "v"
          119 => "w"
          120 => "x"
          121 => "y"
          122 => "z"
          65 => "A"
          66 => "B"
          67 => "C"
          68 => "D"
          69 => "E"
          70 => "F"
          71 => "G"
          72 => "H"
          73 => "I"
          74 => "J"
          75 => "K"
          76 => "L"
          77 => "M"
          78 => "N"
          79 => "O"
          80 => "P"
          81 => "Q"
          82 => "R"
          83 => "S"
          84 => "T"
          85 => "U"
          86 => "V"
          87 => "W"
          88 => "X"
          89 => "Y"
          90 => "Z"
          48 => "0"
          49 => "1"
          50 => "2"
          51 => "3"
          52 => "4"
          53 => "5"
          54 => "6"
          55 => "7"
          56 => "8"
          57 => "9"
          32 => " "
          33 => "!"
          42 => "*"
          43 => "+"
          45 => "-"
          47 => "/"
        ]
      }
      -paramEncoder: Swift_Encoder_Rfc2231Encoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Encoder\Rfc2231Encoder.php#L16�\^�]8;;�\ {#5094
        -charStream: Swift_CharacterStream_NgCharacterStream�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterStream\NgCharacterStream.php#L16�\^�]8;;�\ {#5092
          -charReader: null
          -charReaderFactory: Swift_CharacterReaderFactory_SimpleCharacterReaderFactory�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterReaderFactory\SimpleCharacterReaderFactory.php#L16�\^�]8;;�\ {#5081}
          -charset: "utf-8"
          -datas: ""
          -datasSize: 0
          -map: null
          -mapType: 0
          -charCount: 0
          -currentPos: 0
        }
      }
      -emailValidator: Egulias\EmailValidator\EmailValidator�]8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8�\^�]8;;�\ {#5093
        -lexer: Egulias\EmailValidator\EmailLexer�]8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailLexer.php#L7�\^�]8;;�\ {#5097
          #charValue: array:28 [
            "(" => 49
            ")" => 261
            "<" => 272
            ">" => 273
            "[" => 262
            "]" => 263
            ":" => 265
            ";" => 275
            "@" => 64
            "\" => 92
            "/" => 278
            "," => 274
            "." => 46
            "'" => 39
            "`" => 96
            """ => 34
            "-" => 264
            "::" => 266
            " " => 267
            "\t" => 268
            "\r" => 269
            "\n" => 270
            "\r\n" => 301
            "IPv6" => 271
            "{" => 276
            "}" => 277
            "" => null
            "\0" => 0
          ]
          #hasInvalidTokens: false
          #previous: array:3 [
            "value" => "generated"
            "type" => 300
            "position" => 39
          ]
          +token: array:3 [
            "value" => ""
            "type" => null
            "position" => 0
          ]
          +lookahead: null
          -input: "54b50e08a8c26f98eb28970cd0de604f@swift.generated"
          -tokens: array:22 [
            0 => array:3 [
              "value" => "54"
              "type" => 300
              "position" => 0
            ]
            1 => array:3 [
              "value" => "b"
              "type" => 300
              "position" => 2
            ]
            2 => array:3 [
              "value" => "50"
              "type" => 300
              "position" => 3
            ]
            3 => array:3 [
              "value" => "e"
              "type" => 300
              "position" => 5
            ]
            4 => array:3 [
              "value" => "08"
              "type" => 300
              "position" => 6
            ]
            5 => array:3 [
              "value" => "a"
              "type" => 300
              "position" => 8
            ]
            6 => array:3 [
              "value" => "8"
              "type" => 300
              "position" => 9
            ]
            7 => array:3 [
              "value" => "c"
              "type" => 300
              "position" => 10
            ]
            8 => array:3 [
              "value" => "26"
              "type" => 300
              "position" => 11
            ]
            9 => array:3 [
              "value" => "f"
              "type" => 300
              "position" => 13
            ]
            10 => array:3 [
              "value" => "98"
              "type" => 300
              "position" => 14
            ]
            11 => array:3 [
              "value" => "eb"
              "type" => 300
              "position" => 16
            ]
            12 => array:3 [
              "value" => "28970"
              "type" => 300
              "position" => 18
            ]
            13 => array:3 [
              "value" => "cd"
              "type" => 300
              "position" => 23
            ]
            14 => array:3 [
              "value" => "0"
              "type" => 300
              "position" => 25
            ]
            15 => array:3 [
              "value" => "de6"
              "type" => 300
              "position" => 26
            ]
            16 => array:3 [
              "value" => "04"
              "type" => 300
              "position" => 29
            ]
            17 => array:3 [
              "value" => "f"
              "type" => 300
              "position" => 31
            ]
            18 => array:3 [
              "value" => "@"
              "type" => 64
              "position" => 32
            ]
            19 => array:3 [
              "value" => "swift"
              "type" => 300
              "position" => 33
            ]
            20 => array:3 [
              "value" => "."
              "type" => 46
              "position" => 38
            ]
            21 => array:3 [
              "value" => "generated"
              "type" => 300
              "position" => 39
            ]
          ]
          -position: 22
          -peek: 0
          -regex: "/([a-zA-Z_]+[46]?)|([^\x00-\x7F])|([0-9]+)|(\r\n)|(::)|(\s+?)|(.)|[\xA0-\xff]+/iu"
        }
        #warnings: []
        #error: null
      }
      -charset: "utf-8"
      -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25�\^�]8;;�\ {#5098}
    }
    -headers: array:9 [
      "content-transfer-encoding" => []
      "content-type" => array:1 [
        0 => Swift_Mime_Headers_ParameterizedHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\ParameterizedHeader.php#L16�\^�]8;;�\ {#4749
          -paramEncoder: null
          -params: array:4 [
            "charset" => null
            "boundary" => "_=_swift_1708951240_14be803fe8c1d06de3618456fcb76b6a_=_"
            "format" => null
            "delsp" => null
          ]
          -value: "multipart/alternative"
          -name: "Content-Type"
          -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5091}
          -lineLength: 78
          -lang: null
          -charset: "utf-8"
          -cachedValue: null
        }
      ]
      "mime-version" => array:1 [
        0 => Swift_Mime_Headers_UnstructuredHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\UnstructuredHeader.php#L16�\^�]8;;�\ {#4817
          -value: "1.0"
          -name: "MIME-Version"
          -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5091}
          -lineLength: 78
          -lang: null
          -charset: "utf-8"
          -cachedValue: null
        }
      ]
      "date" => array:1 [
        0 => Swift_Mime_Headers_DateHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\DateHeader.php#L16�\^�]8;;�\ {#4326
          -dateTime: DateTimeImmutable @1708951240 {#4547
            date: 2024-02-26 06:40:40.255433 America/Chicago (-06:00)
          }
          -name: "Date"
          -encoder: null
          -lineLength: 78
          -lang: null
          -charset: "utf-8"
          -cachedValue: null
        }
      ]
      "message-id" => array:1 [
        0 => Swift_Mime_Headers_IdentificationHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\IdentificationHeader.php#L20�\^�]8;;�\ {#4556
          -ids: array:1 [
            0 => "338afa852f559198d1773c3bac20e4eb@swift.generated"
          ]
          -emailValidator: Egulias\EmailValidator\EmailValidator�]8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8�\^�]8;;�\ {#5093}
          -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25�\^�]8;;�\ {#4824}
          -name: "Message-ID"
          -encoder: null
          -lineLength: 78
          -lang: null
          -charset: "utf-8"
          -cachedValue: null
        }
      ]
      "from" => array:1 [
        0 => Swift_Mime_Headers_MailboxHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\MailboxHeader.php#L19�\^�]8;;�\ {#4553
          -mailboxes: array:1 [
            "info@remotelystartedmn.com" => "RemotelyStartedMN.com"
          ]
          -emailValidator: Egulias\EmailValidator\EmailValidator�]8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8�\^�]8;;�\ {#5093}
          -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25�\^�]8;;�\ {#5098}
          -name: "From"
          -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5091}
          -lineLength: 78
          -lang: null
          -charset: "utf-8"
          -cachedValue: null
        }
      ]
      "subject" => array:1 [
        0 => Swift_Mime_Headers_UnstructuredHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\UnstructuredHeader.php#L16�\^�]8;;�\ {#5083
          -value: "Remote Start Quote 102cmlzspagej5p - UNDEFINED UNDEFINED UNDEFINED anything"
          -name: "Subject"
          -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5091}
          -lineLength: 78
          -lang: null
          -charset: "utf-8"
          -cachedValue: null
        }
      ]
      "reply-to" => array:1 [
        0 => Swift_Mime_Headers_MailboxHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\MailboxHeader.php#L19�\^�]8;;�\ {#5086
          -mailboxes: array:1 [
            "info@remotelystartedmn.com" => "RemotelyStartedMN.com"
          ]
          -emailValidator: Egulias\EmailValidator\EmailValidator�]8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8�\^�]8;;�\ {#5093}
          -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25�\^�]8;;�\ {#5098}
          -name: "Reply-To"
          -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5091}
          -lineLength: 78
          -lang: null
          -charset: "utf-8"
          -cachedValue: null
        }
      ]
      "to" => array:1 [
        0 => Swift_Mime_Headers_MailboxHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\MailboxHeader.php#L19�\^�]8;;�\ {#5077
          -mailboxes: array:1 [
            "larkin.manley@example.net" => "102cmlzspagej5p"
          ]
          -emailValidator: Egulias\EmailValidator\EmailValidator�]8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8�\^�]8;;�\ {#5093}
          -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25�\^�]8;;�\ {#5098}
          -name: "To"
          -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5091}
          -lineLength: 78
          -lang: null
          -charset: "utf-8"
          -cachedValue: null
        }
      ]
    ]
    -order: array:16 [
      "return-path" => 0
      "received" => 1
      "dkim-signature" => 2
      "domainkey-signature" => 3
      "sender" => 4
      "message-id" => 5
      "date" => 6
      "subject" => 7
      "from" => 8
      "reply-to" => 9
      "to" => 10
      "cc" => 11
      "bcc" => 12
      "mime-version" => 13
      "content-type" => 14
      "content-transfer-encoding" => 15
    ]
    -required: array:3 [
      "date" => 0
      "message-id" => 1
      "from" => 2
    ]
    -charset: "utf-8"
  }
  -body: """
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n
    <html xmlns="http://www.w3.org/1999/xhtml">\n
    <head>\n
        <meta name="viewport" content="width=device-width, initial-scale=1.0">\n
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
    </head>\n
    <body style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; background-color: #F8FAFC; color: #74787E; height: 100%; hyphens: auto; line-height: 1.4; margin: 0; -moz-hyphens: auto; -ms-word-break: break-all; width: 100% !important; -webkit-hyphens: auto; -webkit-text-size-adjust: none; word-break: break-word;">\n
        <style>\n
            @media  only screen and (max-width: 600px) {\n
                .inner-body {\n
                    width: 100% !important;\n
                }\n
    \n
                .footer {\n
                    width: 100% !important;\n
                }\n
            }\n
    \n
            @media  only screen and (max-width: 500px) {\n
                .button {\n
                    width: 100% !important;\n
                }\n
            }\n
        </style>\n
    \n
        <table class="wrapper" width="100%" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; background-color: #F8FAFC; margin: 0; padding: 0; width: 100%; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%;">\n
            <tr>\n
                <td align="center" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;">\n
                    <table class="content" width="100%" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; margin: 0; padding: 0; width: 100%; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%;">\n
                        <tr>\n
        <td class="header" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; padding: 25px 0; text-align: center;">\n
            <a href="http://rslaravel.localhost" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #bbbfc3; font-size: 19px; font-weight: bold; text-decoration: none; text-shadow: 0 1px 0 white;">\n
                RemotelyStartedMN.com\n
            </a>\n
        </td>\n
    </tr>\n
    \n
                        <!-- Email Body -->\n
                        <tr>\n
                            <td class="body" width="100%" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; background-color: #FFFFFF; border-bottom: 1px solid #EDEFF2; border-top: 1px solid #EDEFF2; margin: 0; padding: 0; width: 100%; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%;">\n
                                <table class="inner-body" align="center" width="570" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; background-color: #FFFFFF; margin: 0 auto; padding: 0; width: 570px; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 570px;">\n
                                    <!-- Body content -->\n
                                    <tr>\n
                                        <td class="content-cell" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; padding: 35px;">\n
                                            <h1 style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #3D4852; font-size: 19px; font-weight: bold; margin-top: 0; text-align: left;">Hi 102cmlzspagej5p,</h1>\n
    <p style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #3D4852; font-size: 16px; line-height: 1.5em; margin-top: 0; text-align: left;">Your remote start quote is ready for viewing.</p>\n
    <table class="action" align="center" width="100%" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; margin: 30px auto; padding: 0; text-align: center; width: 100%; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%;">\n
        <tr>\n
            <td align="center" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;">\n
                <table width="100%" border="0" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;">\n
                    <tr>\n
                        <td align="center" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;">\n
                            <table border="0" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;">\n
                                <tr>\n
                                    <td style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;">\n
                                        <a href="http://rslaravel.localhost/quote/13165/TMbQbCfekVbiFIOpOKsq?e=1" class="button button-primary" target="_blank" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; border-radius: 3px; box-shadow: 0 2px 3px rgba(0, 0, 0, 0.16); color: #FFF; display: inline-block; text-decoration: none; -webkit-text-size-adjust: none; background-color: #3490DC; border-top: 10px solid #3490DC; border-right: 18px solid #3490DC; border-bottom: 10px solid #3490DC; border-left: 18px solid #3490DC;">View Your Quote</a>\n
                                    </td>\n
                                </tr>\n
                            </table>\n
                        </td>\n
                    </tr>\n
                </table>\n
            </td>\n
        </tr>\n
    </table>\n
    <p style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #3D4852; font-size: 16px; line-height: 1.5em; margin-top: 0; text-align: left;">After you have viewed your quote, if you have any questions please feel free to call, text or email us.  We're looking forward to helping you stay warm this\n
    winter.</p>\n
    <p style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #3D4852; font-size: 16px; line-height: 1.5em; margin-top: 0; text-align: left;">If you are having problems with the button above you can copy/paste this direct link into your browser.\n
    <a href="http://rslaravel.localhost/quote/13165/TMbQbCfekVbiFIOpOKsq?e=1" target="_blank" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #3869D4;">http://rslaravel.localhost/quote/13165/TMbQbCfekVbiFIOpOKsq?e=1</a></p>\n
    \n
    \n
                                            \n
                                        </td>\n
                                    </tr>\n
                                </table>\n
                            </td>\n
                        </tr>\n
    \n
                        <tr>\n
        <td style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;">\n
            <table class="footer" align="center" width="570" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; margin: 0 auto; padding: 0; text-align: center; width: 570px; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 570px;">\n
                <tr>\n
                    <td class="content-cell" align="center" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; padding: 35px;">\n
                        <table class="social" width="100%" style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; width: 100%; background: #FFFFFF; margin: 0; padding: 0;" bgcolor="#DFE4E8">\n
                            <tr style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">\n
                                <td style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">\n
                                    <!-- column 1 -->\n
                                    <table align="left" class="column" style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; float: left; margin: 0; padding: 0;">\n
                                        <tr style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">\n
                                            <td style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 15px;">\n
                                                <h5 class="" style="box-sizing: border-box; font-family: 'HelveticaNeue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; line-height: 1.1; color: #000; font-weight: 900; font-size: 17px; margin: 0 0 15px; padding: 0;">Connect with Us:</h5>\n
                                                <p class="" style="box-sizing: border-box; margin-top: 0; color: #AEAEAE; text-align: center; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-weight: normal; font-size: 14px; line-height: 1.6; margin: 0 0 10px; padding: 0;">\n
                                                                                                <a href="https://www.facebook.com/remotelystartedmn" target="_blank" class="button button-primary" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; border-radius: 3px; box-shadow: 0 2px 3px rgba(0, 0, 0, 0.16); color: #FFF; display: inline-block; text-decoration: none; -webkit-text-size-adjust: none; background-color: #3490DC; border-top: 10px solid #3490DC; border-right: 18px solid #3490DC; border-bottom: 10px solid #3490DC; border-left: 18px solid #3490DC; margin-bottom: 8px;">Facebook</a>\n
                                                                                                                                                <a href="https://www.youtube.com/channel/UCJP-aaTX0XeqIWGhPrCQDRA" target="_blank" class="button button-error" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; border-radius: 3px; box-shadow: 0 2px 3px rgba(0, 0, 0, 0.16); color: #FFF; display: inline-block; text-decoration: none; -webkit-text-size-adjust: none; background-color: #E3342F; border-top: 10px solid #E3342F; border-right: 18px solid #E3342F; border-bottom: 10px solid #E3342F; border-left: 18px solid #E3342F; margin-bottom: 8px;">Youtube</a>\n
                                                                                                </p>\n
                                            </td>\n
                                        </tr>\n
                                    </table>\n
    <!-- /column 1 --><!-- column 2 -->\n
                                    <table align="left" class="column" style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; float: left; margin: 0; padding: 0;">\n
                                        <tr style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">\n
                                            <td style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 15px; height: 119px;">\n
    \n
                                                <h5 class="" style="box-sizing: border-box; font-family: 'HelveticaNeue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; line-height: 1.1; color: #000; font-weight: 900; font-size: 17px; margin: 0 0 15px; padding: 0;">Contact Info:</h5>\n
                                                <p style="box-sizing: border-box; margin-top: 0; color: #AEAEAE; text-align: center; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-weight: normal; font-size: 14px; line-height: 1.6; margin: 0 0 10px; padding: 0;">JD &amp; Brooklynn<br>\n
    \t\t\t\t\t\t\t\t\t\t\t\t14802 Dundee Ave<br>Apple Valley, MN 55124\n
                                                    <br><br>\n
                                                    Phone: <strong style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">612-840-1039</strong><br style="font-family: 'Helvetica Neue', 'Helvetica',\n
                                                    Helvetica, Arial,\n
                                                    sans-serif;\n
                                                    margin: 0; padding: 0;">\n
                                                    Email: <!--<strong style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin:\n
                                                    0; padding: 0;">--><a href="mailto:info@remotelystartedmn.com" style="box-sizing: border-box; color: #3869D4; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">info@remotelystartedmn.com</a><!--</strong>--></p>\n
    \n
                                            </td>\n
                                        </tr>\n
                                    </table>\n
    <!-- /column 2 -->\n
                                    <span class="clear" style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; display: block; clear: both; margin: 0; padding: 0;"></span>\n
    \n
                                </td>\n
                            </tr>\n
                        </table>\n
                        <br>\n
                        <p style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; line-height: 1.5em; margin-top: 0; color: #AEAEAE; font-size: 12px; text-align: center;">© 2024 RemotelyStartedMN.com. All rights reserved.</p>\n
    \n
                        <small style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;"><a href="http://rslaravel.localhost/web_site_terms_and_conditions_of_use.html" target="_blank" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #3869D4;">Terms</a> |\n
                            <a href="http://rslaravel.localhost/privacy" target="_blank" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #3869D4;">Privacy</a>\n
                            \n
                        </small>\n
                    </td>\n
                </tr>\n
            </table>\n
        </td>\n
    </tr>\n
                    </table>\n
                </td>\n
            </tr>\n
        </table>\n
    </body>\n
    </html>
    """
  -encoder: Swift_Mime_ContentEncoder_QpContentEncoderProxy�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\ContentEncoder\QpContentEncoderProxy.php#L18�\^�]8;;�\ {#5095
    -safeEncoder: Swift_Mime_ContentEncoder_QpContentEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\ContentEncoder\QpContentEncoder.php#L16�\^�]8;;�\ {#5096
      #dotEscape: false
      #charStream: Swift_CharacterStream_NgCharacterStream�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterStream\NgCharacterStream.php#L16�\^�]8;;�\ {#4650
        -charReader: null
        -charReaderFactory: Swift_CharacterReaderFactory_SimpleCharacterReaderFactory�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterReaderFactory\SimpleCharacterReaderFactory.php#L16�\^�]8;;�\ {#5081}
        -charset: "utf-8"
        -datas: ""
        -datasSize: 0
        -map: null
        -mapType: 0
        -charCount: 0
        -currentPos: 0
      }
      #filter: Swift_StreamFilters_ByteArrayReplacementFilter�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\StreamFilters\ByteArrayReplacementFilter.php#L18�\^�]8;;�\ {#4648
        -replace: array:3 [
          0 => array:2 [
            0 => 13
            1 => 10
          ]
          1 => array:2 [
            0 => 13
            1 => 10
          ]
          2 => array:2 [
            0 => 13
            1 => 10
          ]
        ]
        -index: array:2 [
          13 => true
          10 => true
        ]
        -tree: array:2 [
          13 => array:3 [
            10 => array:2 [
              -1 => 0
              -2 => 2
            ]
            -1 => 1
            -2 => 1
          ]
          10 => array:2 [
            -1 => 2
            -2 => 1
          ]
        ]
        -treeMaxLen: 2
        -repSize: array:3 [
          2 => 2
          1 => 2
          0 => 2
        ]
      }
      #safeMap: array:95 [
        9 => "\t"
        32 => " "
        33 => "!"
        34 => """
        35 => "#"
        36 => "$"
        37 => "%"
        38 => "&"
        39 => "'"
        40 => "("
        41 => ")"
        42 => "*"
        43 => "+"
        44 => ","
        45 => "-"
        46 => "."
        47 => "/"
        48 => "0"
        49 => "1"
        50 => "2"
        51 => "3"
        52 => "4"
        53 => "5"
        54 => "6"
        55 => "7"
        56 => "8"
        57 => "9"
        58 => ":"
        59 => ";"
        60 => "<"
        62 => ">"
        63 => "?"
        64 => "@"
        65 => "A"
        66 => "B"
        67 => "C"
        68 => "D"
        69 => "E"
        70 => "F"
        71 => "G"
        72 => "H"
        73 => "I"
        74 => "J"
        75 => "K"
        76 => "L"
        77 => "M"
        78 => "N"
        79 => "O"
        80 => "P"
        81 => "Q"
        82 => "R"
        83 => "S"
        84 => "T"
        85 => "U"
        86 => "V"
        87 => "W"
        88 => "X"
        89 => "Y"
        90 => "Z"
        91 => "["
        92 => "\"
        93 => "]"
        94 => "^"
        95 => "_"
        96 => "`"
        97 => "a"
        98 => "b"
        99 => "c"
        100 => "d"
        101 => "e"
        102 => "f"
        103 => "g"
        104 => "h"
        105 => "i"
        106 => "j"
        107 => "k"
        108 => "l"
        109 => "m"
        110 => "n"
        111 => "o"
        112 => "p"
        113 => "q"
        114 => "r"
        115 => "s"
        116 => "t"
        117 => "u"
        118 => "v"
        119 => "w"
        120 => "x"
        121 => "y"
        122 => "z"
        123 => "{"
        124 => "|"
        125 => "}"
        126 => "~"
      ]
    }
    -nativeEncoder: Swift_Mime_ContentEncoder_NativeQpContentEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\ContentEncoder\NativeQpContentEncoder.php#L16�\^�]8;;�\ {#4649
      -charset: "utf-8"
    }
    -charset: "utf-8"
  }
  -idGenerator: Swift_Mime_IdGenerator�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\IdGenerator.php#L14�\^�]8;;�\ {#4652
    -idRight: "swift.generated"
  }
  -boundary: "_=_swift_1708951240_14be803fe8c1d06de3618456fcb76b6a_=_"
  -compositeRanges: array:3 [
    "multipart/mixed" => array:2 [
      0 => 16
      1 => 256
    ]
    "multipart/alternative" => array:2 [
      0 => 256
      1 => 4096
    ]
    "multipart/related" => array:2 [
      0 => 4096
      1 => 65536
    ]
  ]
  -compoundLevelFilters: array:1 [
    69632 => array:1 [
      4096 => array:2 [
        "text/plain" => 4096
        "text/html" => 65536
      ]
    ]
  ]
  -cache: Swift_KeyCache_DiskKeyCache�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\KeyCache\DiskKeyCache.php#L16�\^�]8;;�\ {#4530
    -stream: Swift_KeyCache_SimpleKeyCacheInputStream�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\KeyCache\SimpleKeyCacheInputStream.php#L16�\^�]8;;�\ {#4656
      -keyCache: null
      -nsKey: null
      -itemKey: null
      -writeThrough: null
    }
    -path: "C:\Users\fasts\AppData\Local\Temp"
    -keys: []
  }
  -immediateChildren: array:2 [
    0 => Swift_MimePart�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\MimePart.php#L16�\^�]8;;�\ {#5076
      #userFormat: null
      #userCharset: "utf-8"
      #userDelSp: null
      -nestingLevel: 4096
      -headers: Swift_Mime_SimpleHeaderSet�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderSet.php#L16�\^�]8;;�\ {#5078
        -factory: Swift_Mime_SimpleHeaderFactory�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderFactory.php#L18�\^�]8;;�\ {#5082
          -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5074
            #charStream: Swift_CharacterStream_NgCharacterStream�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterStream\NgCharacterStream.php#L16�\^�]8;;�\ {#5073
              -charReader: null
              -charReaderFactory: Swift_CharacterReaderFactory_SimpleCharacterReaderFactory�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterReaderFactory\SimpleCharacterReaderFactory.php#L16�\^�]8;;�\ {#5081}
              -charset: "utf-8"
              -datas: ""
              -datasSize: 0
              -map: null
              -mapType: 0
              -charCount: 0
              -currentPos: 0
            }
            #filter: null
            #safeMap: array:68 [
              97 => "a"
              98 => "b"
              99 => "c"
              100 => "d"
              101 => "e"
              102 => "f"
              103 => "g"
              104 => "h"
              105 => "i"
              106 => "j"
              107 => "k"
              108 => "l"
              109 => "m"
              110 => "n"
              111 => "o"
              112 => "p"
              113 => "q"
              114 => "r"
              115 => "s"
              116 => "t"
              117 => "u"
              118 => "v"
              119 => "w"
              120 => "x"
              121 => "y"
              122 => "z"
              65 => "A"
              66 => "B"
              67 => "C"
              68 => "D"
              69 => "E"
              70 => "F"
              71 => "G"
              72 => "H"
              73 => "I"
              74 => "J"
              75 => "K"
              76 => "L"
              77 => "M"
              78 => "N"
              79 => "O"
              80 => "P"
              81 => "Q"
              82 => "R"
              83 => "S"
              84 => "T"
              85 => "U"
              86 => "V"
              87 => "W"
              88 => "X"
              89 => "Y"
              90 => "Z"
              48 => "0"
              49 => "1"
              50 => "2"
              51 => "3"
              52 => "4"
              53 => "5"
              54 => "6"
              55 => "7"
              56 => "8"
              57 => "9"
              32 => " "
              33 => "!"
              42 => "*"
              43 => "+"
              45 => "-"
              47 => "/"
            ]
          }
          -paramEncoder: Swift_Encoder_Rfc2231Encoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Encoder\Rfc2231Encoder.php#L16�\^�]8;;�\ {#5075
            -charStream: Swift_CharacterStream_NgCharacterStream�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterStream\NgCharacterStream.php#L16�\^�]8;;�\ {#5070
              -charReader: null
              -charReaderFactory: Swift_CharacterReaderFactory_SimpleCharacterReaderFactory�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterReaderFactory\SimpleCharacterReaderFactory.php#L16�\^�]8;;�\ {#5081}
              -charset: "utf-8"
              -datas: ""
              -datasSize: 0
              -map: null
              -mapType: 0
              -charCount: 0
              -currentPos: 0
            }
          }
          -emailValidator: Egulias\EmailValidator\EmailValidator�]8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8�\^�]8;;�\ {#5093}
          -charset: "utf-8"
          -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25�\^�]8;;�\ {#5069}
        }
        -headers: array:2 [
          "content-transfer-encoding" => array:1 [
            0 => Swift_Mime_Headers_UnstructuredHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\UnstructuredHeader.php#L16�\^�]8;;�\ {#5079
              -value: "quoted-printable"
              -name: "Content-Transfer-Encoding"
              -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5074}
              -lineLength: 78
              -lang: null
              -charset: "utf-8"
              -cachedValue: null
            }
          ]
          "content-type" => array:1 [
            0 => Swift_Mime_Headers_ParameterizedHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\ParameterizedHeader.php#L16�\^�]8;;�\ {#5068
              -paramEncoder: null
              -params: array:1 [
                "charset" => "utf-8"
              ]
              -value: "text/plain"
              -name: "Content-Type"
              -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5074}
              -lineLength: 78
              -lang: null
              -charset: "utf-8"
              -cachedValue: null
            }
          ]
        ]
        -order: array:2 [
          "content-type" => 0
          "content-transfer-encoding" => 1
        ]
        -required: []
        -charset: "utf-8"
      }
      -body: """
        [RemotelyStartedMN.com](http://rslaravel.localhost)\n
        \n
        # Hi 102cmlzspagej5p,\n
        Your remote start quote is ready for viewing.\n
        \n
        View Your Quote: http://rslaravel.localhost/quote/13165/TMbQbCfekVbiFIOpOKsq?e=1\n
        \n
        After you have viewed your quote, if you have any questions please feel free to call, text or email us.  We're looking forward to helping you stay warm this\n
        winter.\n
        \n
        If you are having problems with the button above you can copy/paste this direct link into your browser.\n
        http://rslaravel.localhost/quote/13165/TMbQbCfekVbiFIOpOKsq?e=1\n
        \n
        © 2024 RemotelyStartedMN.com. All rights reserved.\n
        """
      -encoder: Swift_Mime_ContentEncoder_QpContentEncoderProxy�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\ContentEncoder\QpContentEncoderProxy.php#L18�\^�]8;;�\ {#5095}
      -idGenerator: Swift_Mime_IdGenerator�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\IdGenerator.php#L14�\^�]8;;�\ {#4652}
      -boundary: null
      -compositeRanges: array:3 [
        "multipart/mixed" => array:2 [
          0 => 16
          1 => 256
        ]
        "multipart/alternative" => array:2 [
          0 => 256
          1 => 4096
        ]
        "multipart/related" => array:2 [
          0 => 4096
          1 => 65536
        ]
      ]
      -compoundLevelFilters: array:1 [
        69632 => array:1 [
          4096 => array:2 [
            "text/plain" => 4096
            "text/html" => 65536
          ]
        ]
      ]
      -cache: Swift_KeyCache_DiskKeyCache�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\KeyCache\DiskKeyCache.php#L16�\^�]8;;�\ {#4530}
      -immediateChildren: []
      -children: []
      -maxLineLength: 78
      -alternativePartOrder: array:3 [
        "text/plain" => 1
        "text/html" => 2
        "multipart/related" => 3
      ]
      -id: "fcb229d0127bd3c1128ee42d3dd65071@swift.generated"
      -cacheKey: "9e2120edad7d53694e66f0473a03ad78"
      #userContentType: "text/plain"
      -nestingLevel: 4096
    }
    1 => Swift_Mime_SimpleMimeEntity�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleMimeEntity.php#L16�\^�]8;;�\ {#5050
      -headers: Swift_Mime_SimpleHeaderSet�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderSet.php#L16�\^�]8;;�\ {#5049
        -factory: Swift_Mime_SimpleHeaderFactory�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderFactory.php#L18�\^�]8;;�\ {#5090}
        -headers: array:2 [
          "content-transfer-encoding" => []
          "content-type" => array:1 [
            0 => Swift_Mime_Headers_ParameterizedHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\ParameterizedHeader.php#L16�\^�]8;;�\ {#5048
              -paramEncoder: null
              -params: array:1 [
                "boundary" => "_=_swift_1708951240_657b30b94e42e05c9b76e6c691afa97a_=_"
              ]
              -value: "multipart/related"
              -name: "Content-Type"
              -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5091}
              -lineLength: 78
              -lang: null
              -charset: "utf-8"
              -cachedValue: null
            }
          ]
        ]
        -order: array:2 [
          "content-type" => 0
          "content-transfer-encoding" => 1
        ]
        -required: []
        -charset: null
      }
      -body: null
      -encoder: Swift_Mime_ContentEncoder_QpContentEncoderProxy�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\ContentEncoder\QpContentEncoderProxy.php#L18�\^�]8;;�\ {#5095}
      -idGenerator: Swift_Mime_IdGenerator�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\IdGenerator.php#L14�\^�]8;;�\ {#4652}
      -boundary: "_=_swift_1708951240_657b30b94e42e05c9b76e6c691afa97a_=_"
      -compositeRanges: array:3 [
        "multipart/mixed" => array:2 [
          0 => 16
          1 => 256
        ]
        "multipart/alternative" => array:2 [
          0 => 256
          1 => 4096
        ]
        "multipart/related" => array:2 [
          0 => 4096
          1 => 65536
        ]
      ]
      -compoundLevelFilters: array:1 [
        69632 => array:1 [
          4096 => array:2 [
            "text/plain" => 4096
            "text/html" => 65536
          ]
        ]
      ]
      -nestingLevel: 4096
      -cache: Swift_KeyCache_DiskKeyCache�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\KeyCache\DiskKeyCache.php#L16�\^�]8;;�\ {#4530}
      -immediateChildren: array:1 [
        0 => Swift_Image�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Image.php#L16�\^�]8;;�\ {#5059
          -mimeTypes: array:986 [
            "3dml" => "text/vnd.in3d.3dml"
            "3ds" => "image/x-3ds"
            "3g2" => "video/3gpp2"
            "3gp" => "video/3gpp"
            "7z" => "application/x-7z-compressed"
            "aab" => "application/x-authorware-bin"
            "aac" => "audio/x-aac"
            "aam" => "application/x-authorware-map"
            "aas" => "application/x-authorware-seg"
            "abw" => "application/x-abiword"
            "ac" => "application/pkix-attr-cert"
            "acc" => "application/vnd.americandynamics.acc"
            "ace" => "application/x-ace-compressed"
            "acu" => "application/vnd.acucobol"
            "acutc" => "application/vnd.acucorp"
            "adp" => "audio/adpcm"
            "aep" => "application/vnd.audiograph"
            "afm" => "application/x-font-type1"
            "afp" => "application/vnd.ibm.modcap"
            "ahead" => "application/vnd.ahead.space"
            "ai" => "application/postscript"
            "aif" => "audio/x-aiff"
            "aifc" => "audio/x-aiff"
            "aiff" => "audio/x-aiff"
            "air" => "application/vnd.adobe.air-application-installer-package+zip"
            "ait" => "application/vnd.dvb.ait"
            "ami" => "application/vnd.amiga.ami"
            "apk" => "application/vnd.android.package-archive"
            "appcache" => "text/cache-manifest"
            "apr" => "application/vnd.lotus-approach"
            "aps" => "application/postscript"
            "arc" => "application/x-freearc"
            "asc" => "application/pgp-signature"
            "asf" => "video/x-ms-asf"
            "asm" => "text/x-asm"
            "aso" => "application/vnd.accpac.simply.aso"
            "asx" => "video/x-ms-asf"
            "atc" => "application/vnd.acucorp"
            "atom" => "application/atom+xml"
            "atomcat" => "application/atomcat+xml"
            "atomsvc" => "application/atomsvc+xml"
            "atx" => "application/vnd.antix.game-component"
            "au" => "audio/basic"
            "avi" => "video/x-msvideo"
            "aw" => "application/applixware"
            "azf" => "application/vnd.airzip.filesecure.azf"
            "azs" => "application/vnd.airzip.filesecure.azs"
            "azw" => "application/vnd.amazon.ebook"
            "bat" => "application/x-msdownload"
            "bcpio" => "application/x-bcpio"
            "bdf" => "application/x-font-bdf"
            "bdm" => "application/vnd.syncml.dm+wbxml"
            "bed" => "application/vnd.realvnc.bed"
            "bh2" => "application/vnd.fujitsu.oasysprs"
            "bin" => "application/octet-stream"
            "blb" => "application/x-blorb"
            "blorb" => "application/x-blorb"
            "bmi" => "application/vnd.bmi"
            "bmp" => "image/bmp"
            "book" => "application/vnd.framemaker"
            "box" => "application/vnd.previewsystems.box"
            "boz" => "application/x-bzip2"
            "bpk" => "application/octet-stream"
            "btif" => "image/prs.btif"
            "bz" => "application/x-bzip"
            "bz2" => "application/x-bzip2"
            "c" => "text/x-c"
            "c11amc" => "application/vnd.cluetrust.cartomobile-config"
            "c11amz" => "application/vnd.cluetrust.cartomobile-config-pkg"
            "c4d" => "application/vnd.clonk.c4group"
            "c4f" => "application/vnd.clonk.c4group"
            "c4g" => "application/vnd.clonk.c4group"
            "c4p" => "application/vnd.clonk.c4group"
            "c4u" => "application/vnd.clonk.c4group"
            "cab" => "application/vnd.ms-cab-compressed"
            "caf" => "audio/x-caf"
            "cap" => "application/vnd.tcpdump.pcap"
            "car" => "application/vnd.curl.car"
            "cat" => "application/vnd.ms-pki.seccat"
            "cb7" => "application/x-cbr"
            "cba" => "application/x-cbr"
            "cbr" => "application/x-cbr"
            "cbt" => "application/x-cbr"
            "cbz" => "application/x-cbr"
            "cc" => "text/x-c"
            "cct" => "application/x-director"
            "ccxml" => "application/ccxml+xml"
            "cdbcmsg" => "application/vnd.contact.cmsg"
            "cdf" => "application/x-netcdf"
            "cdkey" => "application/vnd.mediastation.cdkey"
            "cdmia" => "application/cdmi-capability"
            "cdmic" => "application/cdmi-container"
            "cdmid" => "application/cdmi-domain"
            "cdmio" => "application/cdmi-object"
            "cdmiq" => "application/cdmi-queue"
            "cdx" => "chemical/x-cdx"
            "cdxml" => "application/vnd.chemdraw+xml"
            "cdy" => "application/vnd.cinderella"
            "cer" => "application/pkix-cert"
            "cfs" => "application/x-cfs-compressed"
            "cgm" => "image/cgm"
            "chat" => "application/x-chat"
            "chm" => "application/vnd.ms-htmlhelp"
            "chrt" => "application/vnd.kde.kchart"
            "cif" => "chemical/x-cif"
            "cii" => "application/vnd.anser-web-certificate-issue-initiation"
            "cil" => "application/vnd.ms-artgalry"
            "cla" => "application/vnd.claymore"
            "class" => "application/java-vm"
            "clkk" => "application/vnd.crick.clicker.keyboard"
            "clkp" => "application/vnd.crick.clicker.palette"
            "clkt" => "application/vnd.crick.clicker.template"
            "clkw" => "application/vnd.crick.clicker.wordbank"
            "clkx" => "application/vnd.crick.clicker"
            "clp" => "application/x-msclip"
            "cmc" => "application/vnd.cosmocaller"
            "cmdf" => "chemical/x-cmdf"
            "cml" => "chemical/x-cml"
            "cmp" => "application/vnd.yellowriver-custom-menu"
            "cmx" => "image/x-cmx"
            "cod" => "application/vnd.rim.cod"
            "com" => "application/x-msdownload"
            "conf" => "text/plain"
            "cpio" => "application/x-cpio"
            "cpp" => "text/x-c"
            "cpt" => "application/mac-compactpro"
            "crd" => "application/x-mscardfile"
            "crl" => "application/pkix-crl"
            "crt" => "application/x-x509-ca-cert"
            "csh" => "application/x-csh"
            "csml" => "chemical/x-csml"
            "csp" => "application/vnd.commonspace"
            "css" => "text/css"
            "cst" => "application/x-director"
            "csv" => "text/csv"
            "cu" => "application/cu-seeme"
            "curl" => "text/vnd.curl"
            "cww" => "application/prs.cww"
            "cxt" => "application/x-director"
            "cxx" => "text/x-c"
            "dae" => "model/vnd.collada+xml"
            "daf" => "application/vnd.mobius.daf"
            "dart" => "application/vnd.dart"
            "dataless" => "application/vnd.fdsn.seed"
            "davmount" => "application/davmount+xml"
            "dbk" => "application/docbook+xml"
            "dcr" => "application/x-director"
            "dcurl" => "text/vnd.curl.dcurl"
            "dd2" => "application/vnd.oma.dd2+xml"
            "ddd" => "application/vnd.fujixerox.ddd"
            "deb" => "application/x-debian-package"
            "def" => "text/plain"
            "deploy" => "application/octet-stream"
            "der" => "application/x-x509-ca-cert"
            "dfac" => "application/vnd.dreamfactory"
            "dgc" => "application/x-dgc-compressed"
            "dic" => "text/x-c"
            "dir" => "application/x-director"
            "dis" => "application/vnd.mobius.dis"
            "dist" => "application/octet-stream"
            "distz" => "application/octet-stream"
            "djv" => "image/vnd.djvu"
            "djvu" => "image/vnd.djvu"
            "dll" => "application/x-msdownload"
            "dmg" => "application/x-apple-diskimage"
            "dmp" => "application/vnd.tcpdump.pcap"
            "dms" => "application/octet-stream"
            "dna" => "application/vnd.dna"
            "doc" => "application/msword"
            "docm" => "application/vnd.ms-word.document.macroenabled.12"
            "docx" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
            "dot" => "application/msword"
            "dotm" => "application/vnd.ms-word.template.macroenabled.12"
            "dotx" => "application/vnd.openxmlformats-officedocument.wordprocessingml.template"
            "dp" => "application/vnd.osgi.dp"
            "dpg" => "application/vnd.dpgraph"
            "dra" => "audio/vnd.dra"
            "dsc" => "text/prs.lines.tag"
            "dssc" => "application/dssc+der"
            "dtb" => "application/x-dtbook+xml"
            "dtd" => "application/xml-dtd"
            "dts" => "audio/vnd.dts"
            "dtshd" => "audio/vnd.dts.hd"
            "dump" => "application/octet-stream"
            "dvb" => "video/vnd.dvb.file"
            "dvi" => "application/x-dvi"
            "dwf" => "model/vnd.dwf"
            "dwg" => "image/vnd.dwg"
            "dxf" => "image/vnd.dxf"
            "dxp" => "application/vnd.spotfire.dxp"
            "dxr" => "application/x-director"
            "ecelp4800" => "audio/vnd.nuera.ecelp4800"
            "ecelp7470" => "audio/vnd.nuera.ecelp7470"
            "ecelp9600" => "audio/vnd.nuera.ecelp9600"
            "ecma" => "application/ecmascript"
            "edm" => "application/vnd.novadigm.edm"
            "edx" => "application/vnd.novadigm.edx"
            "efif" => "application/vnd.picsel"
            "ei6" => "application/vnd.pg.osasli"
            "elc" => "application/octet-stream"
            "emf" => "application/x-msmetafile"
            "eml" => "message/rfc822"
            "emma" => "application/emma+xml"
            "emz" => "application/x-msmetafile"
            "eol" => "audio/vnd.digital-winds"
            "eot" => "application/vnd.ms-fontobject"
            "eps" => "application/postscript"
            "epub" => "application/epub+zip"
            "es3" => "application/vnd.eszigno3+xml"
            "esa" => "application/vnd.osgi.subsystem"
            "esf" => "application/vnd.epson.esf"
            "et3" => "application/vnd.eszigno3+xml"
            "etx" => "text/x-setext"
            "eva" => "application/x-eva"
            "evy" => "application/x-envoy"
            "exe" => "application/x-msdownload"
            "exi" => "application/exi"
            "ext" => "application/vnd.novadigm.ext"
            "ez" => "application/andrew-inset"
            "ez2" => "application/vnd.ezpix-album"
            "ez3" => "application/vnd.ezpix-package"
            "f" => "text/x-fortran"
            "f4v" => "video/x-f4v"
            "f77" => "text/x-fortran"
            "f90" => "text/x-fortran"
            "fbs" => "image/vnd.fastbidsheet"
            "fcdt" => "application/vnd.adobe.formscentral.fcdt"
            "fcs" => "application/vnd.isac.fcs"
            "fdf" => "application/vnd.fdf"
            "fe_launch" => "application/vnd.denovo.fcselayout-link"
            "fg5" => "application/vnd.fujitsu.oasysgp"
            "fgd" => "application/x-director"
            "fh" => "image/x-freehand"
            "fh4" => "image/x-freehand"
            "fh5" => "image/x-freehand"
            "fh7" => "image/x-freehand"
            "fhc" => "image/x-freehand"
            "fig" => "application/x-xfig"
            "flac" => "audio/x-flac"
            "fli" => "video/x-fli"
            "flo" => "application/vnd.micrografx.flo"
            "flv" => "video/x-flv"
            "flw" => "application/vnd.kde.kivio"
            "flx" => "text/vnd.fmi.flexstor"
            "fly" => "text/vnd.fly"
            "fm" => "application/vnd.framemaker"
            "fnc" => "application/vnd.frogans.fnc"
            "for" => "text/x-fortran"
            "fpx" => "image/vnd.fpx"
            "frame" => "application/vnd.framemaker"
            "fsc" => "application/vnd.fsc.weblaunch"
            "fst" => "image/vnd.fst"
            "ftc" => "application/vnd.fluxtime.clip"
            "fti" => "application/vnd.anser-web-funds-transfer-initiation"
            "fvt" => "video/vnd.fvt"
            "fxp" => "application/vnd.adobe.fxp"
            "fxpl" => "application/vnd.adobe.fxp"
            "fzs" => "application/vnd.fuzzysheet"
            "g2w" => "application/vnd.geoplan"
            "g3" => "image/g3fax"
            "g3w" => "application/vnd.geospace"
            "gac" => "application/vnd.groove-account"
            "gam" => "application/x-tads"
            "gbr" => "application/rpki-ghostbusters"
            "gca" => "application/x-gca-compressed"
            "gdl" => "model/vnd.gdl"
            "geo" => "application/vnd.dynageo"
            "gex" => "application/vnd.geometry-explorer"
            "ggb" => "application/vnd.geogebra.file"
            "ggt" => "application/vnd.geogebra.tool"
            "ghf" => "application/vnd.groove-help"
            "gif" => "image/gif"
            "gim" => "application/vnd.groove-identity-message"
            "gml" => "application/gml+xml"
            "gmx" => "application/vnd.gmx"
            "gnumeric" => "application/x-gnumeric"
            "gph" => "application/vnd.flographit"
            "gpx" => "application/gpx+xml"
            "gqf" => "application/vnd.grafeq"
            "gqs" => "application/vnd.grafeq"
            "gram" => "application/srgs"
            "gramps" => "application/x-gramps-xml"
            "gre" => "application/vnd.geometry-explorer"
            "grv" => "application/vnd.groove-injector"
            "grxml" => "application/srgs+xml"
            "gsf" => "application/x-font-ghostscript"
            "gtar" => "application/x-gtar"
            "gtm" => "application/vnd.groove-tool-message"
            "gtw" => "model/vnd.gtw"
            "gv" => "text/vnd.graphviz"
            "gxf" => "application/gxf"
            "gxt" => "application/vnd.geonext"
            "gz" => "application/x-gzip"
            "h" => "text/x-c"
            "h261" => "video/h261"
            "h263" => "video/h263"
            "h264" => "video/h264"
            "hal" => "application/vnd.hal+xml"
            "hbci" => "application/vnd.hbci"
            "hdf" => "application/x-hdf"
            "hh" => "text/x-c"
            "hlp" => "application/winhlp"
            "hpgl" => "application/vnd.hp-hpgl"
            "hpid" => "application/vnd.hp-hpid"
            "hps" => "application/vnd.hp-hps"
            "hqx" => "application/mac-binhex40"
            "htke" => "application/vnd.kenameaapp"
            "htm" => "text/html"
            "html" => "text/html"
            "hvd" => "application/vnd.yamaha.hv-dic"
            "hvp" => "application/vnd.yamaha.hv-voice"
            "hvs" => "application/vnd.yamaha.hv-script"
            "i2g" => "application/vnd.intergeo"
            "icc" => "application/vnd.iccprofile"
            "ice" => "x-conference/x-cooltalk"
            "icm" => "application/vnd.iccprofile"
            "ico" => "image/x-icon"
            "ics" => "text/calendar"
            "ief" => "image/ief"
            "ifb" => "text/calendar"
            "ifm" => "application/vnd.shana.informed.formdata"
            "iges" => "model/iges"
            "igl" => "application/vnd.igloader"
            "igm" => "application/vnd.insors.igm"
            "igs" => "model/iges"
            "igx" => "application/vnd.micrografx.igx"
            "iif" => "application/vnd.shana.informed.interchange"
            "imp" => "application/vnd.accpac.simply.imp"
            "ims" => "application/vnd.ms-ims"
            "in" => "text/plain"
            "ink" => "application/inkml+xml"
            "inkml" => "application/inkml+xml"
            "install" => "application/x-install-instructions"
            "iota" => "application/vnd.astraea-software.iota"
            "ipfix" => "application/ipfix"
            "ipk" => "application/vnd.shana.informed.package"
            "irm" => "application/vnd.ibm.rights-management"
            "irp" => "application/vnd.irepository.package+xml"
            "iso" => "application/x-iso9660-image"
            "itp" => "application/vnd.shana.informed.formtemplate"
            "ivp" => "application/vnd.immervision-ivp"
            "ivu" => "application/vnd.immervision-ivu"
            "jad" => "text/vnd.sun.j2me.app-descriptor"
            "jam" => "application/vnd.jam"
            "jar" => "application/java-archive"
            "java" => "text/x-java-source"
            "jisp" => "application/vnd.jisp"
            "jlt" => "application/vnd.hp-jlyt"
            "jnlp" => "application/x-java-jnlp-file"
            "joda" => "application/vnd.joost.joda-archive"
            "jpe" => "image/jpeg"
            "jpeg" => "image/jpeg"
            "jpg" => "image/jpeg"
            "jpgm" => "video/jpm"
            "jpgv" => "video/jpeg"
            "jpm" => "video/jpm"
            "js" => "application/javascript"
            "json" => "application/json"
            "jsonml" => "application/jsonml+json"
            "kar" => "audio/midi"
            "karbon" => "application/vnd.kde.karbon"
            "kfo" => "application/vnd.kde.kformula"
            "kia" => "application/vnd.kidspiration"
            "kml" => "application/vnd.google-earth.kml+xml"
            "kmz" => "application/vnd.google-earth.kmz"
            "kne" => "application/vnd.kinar"
            "knp" => "application/vnd.kinar"
            "kon" => "application/vnd.kde.kontour"
            "kpr" => "application/vnd.kde.kpresenter"
            "kpt" => "application/vnd.kde.kpresenter"
            "kpxx" => "application/vnd.ds-keypoint"
            "ksp" => "application/vnd.kde.kspread"
            "ktr" => "application/vnd.kahootz"
            "ktx" => "image/ktx"
            "ktz" => "application/vnd.kahootz"
            "kwd" => "application/vnd.kde.kword"
            "kwt" => "application/vnd.kde.kword"
            "lasxml" => "application/vnd.las.las+xml"
            "latex" => "application/x-latex"
            "lbd" => "application/vnd.llamagraphics.life-balance.desktop"
            "lbe" => "application/vnd.llamagraphics.life-balance.exchange+xml"
            "les" => "application/vnd.hhe.lesson-player"
            "lha" => "application/x-lzh-compressed"
            "link66" => "application/vnd.route66.link66+xml"
            "list" => "text/plain"
            "list3820" => "application/vnd.ibm.modcap"
            "listafp" => "application/vnd.ibm.modcap"
            "lnk" => "application/x-ms-shortcut"
            "log" => "text/plain"
            "lostxml" => "application/lost+xml"
            "lrf" => "application/octet-stream"
            "lrm" => "application/vnd.ms-lrm"
            "ltf" => "application/vnd.frogans.ltf"
            "lvp" => "audio/vnd.lucent.voice"
            "lwp" => "application/vnd.lotus-wordpro"
            "lzh" => "application/x-lzh-compressed"
            "m13" => "application/x-msmediaview"
            "m14" => "application/x-msmediaview"
            "m1v" => "video/mpeg"
            "m21" => "application/mp21"
            "m2a" => "audio/mpeg"
            "m2v" => "video/mpeg"
            "m3a" => "audio/mpeg"
            "m3u" => "audio/x-mpegurl"
            "m3u8" => "application/vnd.apple.mpegurl"
            "m4a" => "audio/mp4"
            "m4u" => "video/vnd.mpegurl"
            "m4v" => "video/x-m4v"
            "ma" => "application/mathematica"
            "mads" => "application/mads+xml"
            "mag" => "application/vnd.ecowin.chart"
            "maker" => "application/vnd.framemaker"
            "man" => "text/troff"
            "mar" => "application/octet-stream"
            "mathml" => "application/mathml+xml"
            "mb" => "application/mathematica"
            "mbk" => "application/vnd.mobius.mbk"
            "mbox" => "application/mbox"
            "mc1" => "application/vnd.medcalcdata"
            "mcd" => "application/vnd.mcd"
            "mcurl" => "text/vnd.curl.mcurl"
            "mdb" => "application/x-msaccess"
            "mdi" => "image/vnd.ms-modi"
            "me" => "text/troff"
            "mesh" => "model/mesh"
            "meta4" => "application/metalink4+xml"
            "metalink" => "application/metalink+xml"
            "mets" => "application/mets+xml"
            "mfm" => "application/vnd.mfmp"
            "mft" => "application/rpki-manifest"
            "mgp" => "application/vnd.osgeo.mapguide.package"
            "mgz" => "application/vnd.proteus.magazine"
            "mid" => "audio/midi"
            "midi" => "audio/midi"
            "mie" => "application/x-mie"
            "mif" => "application/vnd.mif"
            "mime" => "message/rfc822"
            "mj2" => "video/mj2"
            "mjp2" => "video/mj2"
            "mk3d" => "video/x-matroska"
            "mka" => "audio/x-matroska"
            "mks" => "video/x-matroska"
            "mkv" => "video/x-matroska"
            "mlp" => "application/vnd.dolby.mlp"
            "mmd" => "application/vnd.chipnuts.karaoke-mmd"
            "mmf" => "application/vnd.smaf"
            "mmr" => "image/vnd.fujixerox.edmics-mmr"
            "mng" => "video/x-mng"
            "mny" => "application/x-msmoney"
            "mobi" => "application/x-mobipocket-ebook"
            "mods" => "application/mods+xml"
            "mov" => "video/quicktime"
            "movie" => "video/x-sgi-movie"
            "mp2" => "audio/mpeg"
            "mp21" => "application/mp21"
            "mp2a" => "audio/mpeg"
            "mp3" => "audio/mpeg"
            "mp4" => "video/mp4"
            "mp4a" => "audio/mp4"
            "mp4s" => "application/mp4"
            "mp4v" => "video/mp4"
            "mpc" => "application/vnd.mophun.certificate"
            "mpe" => "video/mpeg"
            "mpeg" => "video/mpeg"
            "mpg" => "video/mpeg"
            "mpg4" => "video/mp4"
            "mpga" => "audio/mpeg"
            "mpkg" => "application/vnd.apple.installer+xml"
            "mpm" => "application/vnd.blueice.multipass"
            "mpn" => "application/vnd.mophun.application"
            "mpp" => "application/vnd.ms-project"
            "mpt" => "application/vnd.ms-project"
            "mpy" => "application/vnd.ibm.minipay"
            "mqy" => "application/vnd.mobius.mqy"
            "mrc" => "application/marc"
            "mrcx" => "application/marcxml+xml"
            "ms" => "text/troff"
            "mscml" => "application/mediaservercontrol+xml"
            "mseed" => "application/vnd.fdsn.mseed"
            "mseq" => "application/vnd.mseq"
            "msf" => "application/vnd.epson.msf"
            "msh" => "model/mesh"
            "msi" => "application/x-msdownload"
            "msl" => "application/vnd.mobius.msl"
            "msty" => "application/vnd.muvee.style"
            "mts" => "model/vnd.mts"
            "mus" => "application/vnd.musician"
            "musicxml" => "application/vnd.recordare.musicxml+xml"
            "mvb" => "application/x-msmediaview"
            "mwf" => "application/vnd.mfer"
            "mxf" => "application/mxf"
            "mxl" => "application/vnd.recordare.musicxml"
            "mxml" => "application/xv+xml"
            "mxs" => "application/vnd.triscape.mxs"
            "mxu" => "video/vnd.mpegurl"
            "n-gage" => "application/vnd.nokia.n-gage.symbian.install"
            "n3" => "text/n3"
            "nb" => "application/mathematica"
            "nbp" => "application/vnd.wolfram.player"
            "nc" => "application/x-netcdf"
            "ncx" => "application/x-dtbncx+xml"
            "nfo" => "text/x-nfo"
            "ngdat" => "application/vnd.nokia.n-gage.data"
            "nitf" => "application/vnd.nitf"
            "nlu" => "application/vnd.neurolanguage.nlu"
            "nml" => "application/vnd.enliven"
            "nnd" => "application/vnd.noblenet-directory"
            "nns" => "application/vnd.noblenet-sealer"
            "nnw" => "application/vnd.noblenet-web"
            "npx" => "image/vnd.net-fpx"
            "nsc" => "application/x-conference"
            "nsf" => "application/vnd.lotus-notes"
            "ntf" => "application/vnd.nitf"
            "nzb" => "application/x-nzb"
            "oa2" => "application/vnd.fujitsu.oasys2"
            "oa3" => "application/vnd.fujitsu.oasys3"
            "oas" => "application/vnd.fujitsu.oasys"
            "obd" => "application/x-msbinder"
            "obj" => "application/x-tgif"
            "oda" => "application/oda"
            "odb" => "application/vnd.oasis.opendocument.database"
            "odc" => "application/vnd.oasis.opendocument.chart"
            "odf" => "application/vnd.oasis.opendocument.formula"
            "odft" => "application/vnd.oasis.opendocument.formula-template"
            "odg" => "application/vnd.oasis.opendocument.graphics"
            "odi" => "application/vnd.oasis.opendocument.image"
            "odm" => "application/vnd.oasis.opendocument.text-master"
            "odp" => "application/vnd.oasis.opendocument.presentation"
            "ods" => "application/vnd.oasis.opendocument.spreadsheet"
            "odt" => "application/vnd.oasis.opendocument.text"
            "oga" => "audio/ogg"
            "ogg" => "audio/ogg"
            "ogv" => "video/ogg"
            "ogx" => "application/ogg"
            "omdoc" => "application/omdoc+xml"
            "onepkg" => "application/onenote"
            "onetmp" => "application/onenote"
            "onetoc" => "application/onenote"
            "onetoc2" => "application/onenote"
            "opf" => "application/oebps-package+xml"
            "opml" => "text/x-opml"
            "oprc" => "application/vnd.palm"
            "org" => "application/vnd.lotus-organizer"
            "osf" => "application/vnd.yamaha.openscoreformat"
            "osfpvg" => "application/vnd.yamaha.openscoreformat.osfpvg+xml"
            "otc" => "application/vnd.oasis.opendocument.chart-template"
            "otf" => "application/x-font-otf"
            "otg" => "application/vnd.oasis.opendocument.graphics-template"
            "oth" => "application/vnd.oasis.opendocument.text-web"
            "oti" => "application/vnd.oasis.opendocument.image-template"
            "otp" => "application/vnd.oasis.opendocument.presentation-template"
            "ots" => "application/vnd.oasis.opendocument.spreadsheet-template"
            "ott" => "application/vnd.oasis.opendocument.text-template"
            "oxps" => "application/oxps"
            "oxt" => "application/vnd.openofficeorg.extension"
            "p" => "text/x-pascal"
            "p10" => "application/pkcs10"
            "p12" => "application/x-pkcs12"
            "p7b" => "application/x-pkcs7-certificates"
            "p7c" => "application/pkcs7-mime"
            "p7m" => "application/pkcs7-mime"
            "p7r" => "application/x-pkcs7-certreqresp"
            "p7s" => "application/pkcs7-signature"
            "p8" => "application/pkcs8"
            "pas" => "text/x-pascal"
            "paw" => "application/vnd.pawaafile"
            "pbd" => "application/vnd.powerbuilder6"
            "pbm" => "image/x-portable-bitmap"
            "pcap" => "application/vnd.tcpdump.pcap"
            "pcf" => "application/x-font-pcf"
            "pcl" => "application/vnd.hp-pcl"
            "pclxl" => "application/vnd.hp-pclxl"
            "pct" => "image/x-pict"
            "pcurl" => "application/vnd.curl.pcurl"
            "pcx" => "image/x-pcx"
            "pdb" => "application/vnd.palm"
            "pdf" => "application/pdf"
            "pfa" => "application/x-font-type1"
            "pfb" => "application/x-font-type1"
            "pfm" => "application/x-font-type1"
            "pfr" => "application/font-tdpfr"
            "pfx" => "application/x-pkcs12"
            "pgm" => "image/x-portable-graymap"
            "pgn" => "application/x-chess-pgn"
            "pgp" => "application/pgp-encrypted"
            "php" => "application/x-php"
            "php3" => "application/x-php"
            "php4" => "application/x-php"
            "php5" => "application/x-php"
            "pic" => "image/x-pict"
            "pkg" => "application/octet-stream"
            "pki" => "application/pkixcmp"
            "pkipath" => "application/pkix-pkipath"
            "plb" => "application/vnd.3gpp.pic-bw-large"
            "plc" => "application/vnd.mobius.plc"
            "plf" => "application/vnd.pocketlearn"
            "pls" => "application/pls+xml"
            "pml" => "application/vnd.ctc-posml"
            "png" => "image/png"
            "pnm" => "image/x-portable-anymap"
            "portpkg" => "application/vnd.macports.portpkg"
            "pot" => "application/vnd.ms-powerpoint"
            "potm" => "application/vnd.ms-powerpoint.template.macroenabled.12"
            "potx" => "application/vnd.openxmlformats-officedocument.presentationml.template"
            "ppam" => "application/vnd.ms-powerpoint.addin.macroenabled.12"
            "ppd" => "application/vnd.cups-ppd"
            "ppm" => "image/x-portable-pixmap"
            "pps" => "application/vnd.ms-powerpoint"
            "ppsm" => "application/vnd.ms-powerpoint.slideshow.macroenabled.12"
            "ppsx" => "application/vnd.openxmlformats-officedocument.presentationml.slideshow"
            "ppt" => "application/vnd.ms-powerpoint"
            "pptm" => "application/vnd.ms-powerpoint.presentation.macroenabled.12"
            "pptx" => "application/vnd.openxmlformats-officedocument.presentationml.presentation"
            "pqa" => "application/vnd.palm"
            "prc" => "application/x-mobipocket-ebook"
            "pre" => "application/vnd.lotus-freelance"
            "prf" => "application/pics-rules"
            "ps" => "application/postscript"
            "psb" => "application/vnd.3gpp.pic-bw-small"
            "psd" => "image/vnd.adobe.photoshop"
            "psf" => "application/x-font-linux-psf"
            "pskcxml" => "application/pskc+xml"
            "ptid" => "application/vnd.pvi.ptid1"
            "pub" => "application/x-mspublisher"
            "pvb" => "application/vnd.3gpp.pic-bw-var"
            "pwn" => "application/vnd.3m.post-it-notes"
            "pya" => "audio/vnd.ms-playready.media.pya"
            "pyv" => "video/vnd.ms-playready.media.pyv"
            "qam" => "application/vnd.epson.quickanime"
            "qbo" => "application/vnd.intu.qbo"
            "qfx" => "application/vnd.intu.qfx"
            "qps" => "application/vnd.publishare-delta-tree"
            "qt" => "video/quicktime"
            "qwd" => "application/vnd.quark.quarkxpress"
            "qwt" => "application/vnd.quark.quarkxpress"
            "qxb" => "application/vnd.quark.quarkxpress"
            "qxd" => "application/vnd.quark.quarkxpress"
            "qxl" => "application/vnd.quark.quarkxpress"
            "qxt" => "application/vnd.quark.quarkxpress"
            "ra" => "audio/x-pn-realaudio"
            "ram" => "audio/x-pn-realaudio"
            "rar" => "application/x-rar-compressed"
            "ras" => "image/x-cmu-raster"
            "rcprofile" => "application/vnd.ipunplugged.rcprofile"
            "rdf" => "application/rdf+xml"
            "rdz" => "application/vnd.data-vision.rdz"
            "rep" => "application/vnd.businessobjects"
            "res" => "application/x-dtbresource+xml"
            "rgb" => "image/x-rgb"
            "rif" => "application/reginfo+xml"
            "rip" => "audio/vnd.rip"
            "ris" => "application/x-research-info-systems"
            "rl" => "application/resource-lists+xml"
            "rlc" => "image/vnd.fujixerox.edmics-rlc"
            "rld" => "application/resource-lists-diff+xml"
            "rm" => "application/vnd.rn-realmedia"
            "rmi" => "audio/midi"
            "rmp" => "audio/x-pn-realaudio-plugin"
            "rms" => "application/vnd.jcp.javame.midlet-rms"
            "rmvb" => "application/vnd.rn-realmedia-vbr"
            "rnc" => "application/relax-ng-compact-syntax"
            "roa" => "application/rpki-roa"
            "roff" => "text/troff"
            "rp9" => "application/vnd.cloanto.rp9"
            "rpss" => "application/vnd.nokia.radio-presets"
            "rpst" => "application/vnd.nokia.radio-preset"
            "rq" => "application/sparql-query"
            "rs" => "application/rls-services+xml"
            "rsd" => "application/rsd+xml"
            "rss" => "application/rss+xml"
            "rtf" => "application/rtf"
            "rtx" => "text/richtext"
            "s" => "text/x-asm"
            "s3m" => "audio/s3m"
            "saf" => "application/vnd.yamaha.smaf-audio"
            "sbml" => "application/sbml+xml"
            "sc" => "application/vnd.ibm.secure-container"
            "scd" => "application/x-msschedule"
            "scm" => "application/vnd.lotus-screencam"
            "scq" => "application/scvp-cv-request"
            "scs" => "application/scvp-cv-response"
            "scurl" => "text/vnd.curl.scurl"
            "sda" => "application/vnd.stardivision.draw"
            "sdc" => "application/vnd.stardivision.calc"
            "sdd" => "application/vnd.stardivision.impress"
            "sdkd" => "application/vnd.solent.sdkm+xml"
            "sdkm" => "application/vnd.solent.sdkm+xml"
            "sdp" => "application/sdp"
            "sdw" => "application/vnd.stardivision.writer"
            "see" => "application/vnd.seemail"
            "seed" => "application/vnd.fdsn.seed"
            "sema" => "application/vnd.sema"
            "semd" => "application/vnd.semd"
            "semf" => "application/vnd.semf"
            "ser" => "application/java-serialized-object"
            "setpay" => "application/set-payment-initiation"
            "setreg" => "application/set-registration-initiation"
            "sfd-hdstx" => "application/vnd.hydrostatix.sof-data"
            "sfs" => "application/vnd.spotfire.sfs"
            "sfv" => "text/x-sfv"
            "sgi" => "image/sgi"
            "sgl" => "application/vnd.stardivision.writer-global"
            "sgm" => "text/sgml"
            "sgml" => "text/sgml"
            "sh" => "application/x-sh"
            "shar" => "application/x-shar"
            "shf" => "application/shf+xml"
            "sid" => "image/x-mrsid-image"
            "sig" => "application/pgp-signature"
            "sil" => "audio/silk"
            "silo" => "model/mesh"
            "sis" => "application/vnd.symbian.install"
            "sisx" => "application/vnd.symbian.install"
            "sit" => "application/x-stuffit"
            "sitx" => "application/x-stuffitx"
            "skd" => "application/vnd.koan"
            "skm" => "application/vnd.koan"
            "skp" => "application/vnd.koan"
            "skt" => "application/vnd.koan"
            "sldm" => "application/vnd.ms-powerpoint.slide.macroenabled.12"
            "sldx" => "application/vnd.openxmlformats-officedocument.presentationml.slide"
            "slt" => "application/vnd.epson.salt"
            "sm" => "application/vnd.stepmania.stepchart"
            "smf" => "application/vnd.stardivision.math"
            "smi" => "application/smil+xml"
            "smil" => "application/smil+xml"
            "smv" => "video/x-smv"
            "smzip" => "application/vnd.stepmania.package"
            "snd" => "audio/basic"
            "snf" => "application/x-font-snf"
            "so" => "application/octet-stream"
            "spc" => "application/x-pkcs7-certificates"
            "spf" => "application/vnd.yamaha.smaf-phrase"
            "spl" => "application/x-futuresplash"
            "spot" => "text/vnd.in3d.spot"
            "spp" => "application/scvp-vp-response"
            "spq" => "application/scvp-vp-request"
            "spx" => "audio/ogg"
            "sql" => "application/x-sql"
            "src" => "application/x-wais-source"
            "srt" => "application/x-subrip"
            "sru" => "application/sru+xml"
            "srx" => "application/sparql-results+xml"
            "ssdl" => "application/ssdl+xml"
            "sse" => "application/vnd.kodak-descriptor"
            "ssf" => "application/vnd.epson.ssf"
            "ssml" => "application/ssml+xml"
            "st" => "application/vnd.sailingtracker.track"
            "stc" => "application/vnd.sun.xml.calc.template"
            "std" => "application/vnd.sun.xml.draw.template"
            "stf" => "application/vnd.wt.stf"
            "sti" => "application/vnd.sun.xml.impress.template"
            "stk" => "application/hyperstudio"
            "stl" => "application/vnd.ms-pki.stl"
            "str" => "application/vnd.pg.format"
            "stw" => "application/vnd.sun.xml.writer.template"
            "sub" => "text/vnd.dvb.subtitle"
            "sus" => "application/vnd.sus-calendar"
            "susp" => "application/vnd.sus-calendar"
            "sv4cpio" => "application/x-sv4cpio"
            "sv4crc" => "application/x-sv4crc"
            "svc" => "application/vnd.dvb.service"
            "svd" => "application/vnd.svd"
            "svg" => "image/svg+xml"
            "svgz" => "image/svg+xml"
            "swa" => "application/x-director"
            "swf" => "application/x-shockwave-flash"
            "swi" => "application/vnd.aristanetworks.swi"
            "sxc" => "application/vnd.sun.xml.calc"
            "sxd" => "application/vnd.sun.xml.draw"
            "sxg" => "application/vnd.sun.xml.writer.global"
            "sxi" => "application/vnd.sun.xml.impress"
            "sxm" => "application/vnd.sun.xml.math"
            "sxw" => "application/vnd.sun.xml.writer"
            "t" => "text/troff"
            "t3" => "application/x-t3vm-image"
            "taglet" => "application/vnd.mynfc"
            "tao" => "application/vnd.tao.intent-module-archive"
            "tar" => "application/x-tar"
            "tcap" => "application/vnd.3gpp2.tcap"
            "tcl" => "application/x-tcl"
            "teacher" => "application/vnd.smart.teacher"
            "tei" => "application/tei+xml"
            "teicorpus" => "application/tei+xml"
            "tex" => "application/x-tex"
            "texi" => "application/x-texinfo"
            "texinfo" => "application/x-texinfo"
            "text" => "text/plain"
            "tfi" => "application/thraud+xml"
            "tfm" => "application/x-tex-tfm"
            "tga" => "image/x-tga"
            "thmx" => "application/vnd.ms-officetheme"
            "tif" => "image/tiff"
            "tiff" => "image/tiff"
            "tmo" => "application/vnd.tmobile-livetv"
            "torrent" => "application/x-bittorrent"
            "tpl" => "application/vnd.groove-tool-template"
            "tpt" => "application/vnd.trid.tpt"
            "tr" => "text/troff"
            "tra" => "application/vnd.trueapp"
            "trm" => "application/x-msterminal"
            "tsd" => "application/timestamped-data"
            "tsv" => "text/tab-separated-values"
            "ttc" => "application/x-font-ttf"
            "ttf" => "application/x-font-ttf"
            "ttl" => "text/turtle"
            "twd" => "application/vnd.simtech-mindmapper"
            "twds" => "application/vnd.simtech-mindmapper"
            "txd" => "application/vnd.genomatix.tuxedo"
            "txf" => "application/vnd.mobius.txf"
            "txt" => "text/plain"
            "u32" => "application/x-authorware-bin"
            "udeb" => "application/x-debian-package"
            "ufd" => "application/vnd.ufdl"
            "ufdl" => "application/vnd.ufdl"
            "ulx" => "application/x-glulx"
            "umj" => "application/vnd.umajin"
            "unityweb" => "application/vnd.unity"
            "uoml" => "application/vnd.uoml+xml"
            "uri" => "text/uri-list"
            "uris" => "text/uri-list"
            "urls" => "text/uri-list"
            "ustar" => "application/x-ustar"
            "utz" => "application/vnd.uiq.theme"
            "uu" => "text/x-uuencode"
            "uva" => "audio/vnd.dece.audio"
            "uvd" => "application/vnd.dece.data"
            "uvf" => "application/vnd.dece.data"
            "uvg" => "image/vnd.dece.graphic"
            "uvh" => "video/vnd.dece.hd"
            "uvi" => "image/vnd.dece.graphic"
            "uvm" => "video/vnd.dece.mobile"
            "uvp" => "video/vnd.dece.pd"
            "uvs" => "video/vnd.dece.sd"
            "uvt" => "application/vnd.dece.ttml+xml"
            "uvu" => "video/vnd.uvvu.mp4"
            "uvv" => "video/vnd.dece.video"
            "uvva" => "audio/vnd.dece.audio"
            "uvvd" => "application/vnd.dece.data"
            "uvvf" => "application/vnd.dece.data"
            "uvvg" => "image/vnd.dece.graphic"
            "uvvh" => "video/vnd.dece.hd"
            "uvvi" => "image/vnd.dece.graphic"
            "uvvm" => "video/vnd.dece.mobile"
            "uvvp" => "video/vnd.dece.pd"
            "uvvs" => "video/vnd.dece.sd"
            "uvvt" => "application/vnd.dece.ttml+xml"
            "uvvu" => "video/vnd.uvvu.mp4"
            "uvvv" => "video/vnd.dece.video"
            "uvvx" => "application/vnd.dece.unspecified"
            "uvvz" => "application/vnd.dece.zip"
            "uvx" => "application/vnd.dece.unspecified"
            "uvz" => "application/vnd.dece.zip"
            "vcard" => "text/vcard"
            "vcd" => "application/x-cdlink"
            "vcf" => "text/x-vcard"
            "vcg" => "application/vnd.groove-vcard"
            "vcs" => "text/x-vcalendar"
            "vcx" => "application/vnd.vcx"
            "vis" => "application/vnd.visionary"
            "viv" => "video/vnd.vivo"
            "vob" => "video/x-ms-vob"
            "vor" => "application/vnd.stardivision.writer"
            "vox" => "application/x-authorware-bin"
            "vrml" => "model/vrml"
            "vsd" => "application/vnd.visio"
            "vsf" => "application/vnd.vsf"
            "vss" => "application/vnd.visio"
            "vst" => "application/vnd.visio"
            "vsw" => "application/vnd.visio"
            "vtu" => "model/vnd.vtu"
            "vxml" => "application/voicexml+xml"
            "w3d" => "application/x-director"
            "wad" => "application/x-doom"
            "wav" => "audio/x-wav"
            "wax" => "audio/x-ms-wax"
            "wbmp" => "image/vnd.wap.wbmp"
            "wbs" => "application/vnd.criticaltools.wbs+xml"
            "wbxml" => "application/vnd.wap.wbxml"
            "wcm" => "application/vnd.ms-works"
            "wdb" => "application/vnd.ms-works"
            "wdp" => "image/vnd.ms-photo"
            "weba" => "audio/webm"
            "webm" => "video/webm"
            "webp" => "image/webp"
            "wg" => "application/vnd.pmi.widget"
            "wgt" => "application/widget"
            "wks" => "application/vnd.ms-works"
            "wm" => "video/x-ms-wm"
            "wma" => "audio/x-ms-wma"
            "wmd" => "application/x-ms-wmd"
            "wmf" => "application/x-msmetafile"
            "wml" => "text/vnd.wap.wml"
            "wmlc" => "application/vnd.wap.wmlc"
            "wmls" => "text/vnd.wap.wmlscript"
            "wmlsc" => "application/vnd.wap.wmlscriptc"
            "wmv" => "video/x-ms-wmv"
            "wmx" => "video/x-ms-wmx"
            "wmz" => "application/x-msmetafile"
            "woff" => "application/font-woff"
            "wpd" => "application/vnd.wordperfect"
            "wpl" => "application/vnd.ms-wpl"
            "wps" => "application/vnd.ms-works"
            "wqd" => "application/vnd.wqd"
            "wri" => "application/x-mswrite"
            "wrl" => "model/vrml"
            "wsdl" => "application/wsdl+xml"
            "wspolicy" => "application/wspolicy+xml"
            "wtb" => "application/vnd.webturbo"
            "wvx" => "video/x-ms-wvx"
            "x32" => "application/x-authorware-bin"
            "x3d" => "model/x3d+xml"
            "x3db" => "model/x3d+binary"
            "x3dbz" => "model/x3d+binary"
            "x3dv" => "model/x3d+vrml"
            "x3dvz" => "model/x3d+vrml"
            "x3dz" => "model/x3d+xml"
            "xaml" => "application/xaml+xml"
            "xap" => "application/x-silverlight-app"
            "xar" => "application/vnd.xara"
            "xbap" => "application/x-ms-xbap"
            "xbd" => "application/vnd.fujixerox.docuworks.binder"
            "xbm" => "image/x-xbitmap"
            "xdf" => "application/xcap-diff+xml"
            "xdm" => "application/vnd.syncml.dm+xml"
            "xdp" => "application/vnd.adobe.xdp+xml"
            "xdssc" => "application/dssc+xml"
            "xdw" => "application/vnd.fujixerox.docuworks"
            "xenc" => "application/xenc+xml"
            "xer" => "application/patch-ops-error+xml"
            "xfdf" => "application/vnd.adobe.xfdf"
            "xfdl" => "application/vnd.xfdl"
            "xht" => "application/xhtml+xml"
            "xhtml" => "application/xhtml+xml"
            "xhvml" => "application/xv+xml"
            "xif" => "image/vnd.xiff"
            "xla" => "application/vnd.ms-excel"
            "xlam" => "application/vnd.ms-excel.addin.macroenabled.12"
            "xlc" => "application/vnd.ms-excel"
            "xlf" => "application/x-xliff+xml"
            "xlm" => "application/vnd.ms-excel"
            "xls" => "application/vnd.ms-excel"
            "xlsb" => "application/vnd.ms-excel.sheet.binary.macroenabled.12"
            "xlsm" => "application/vnd.ms-excel.sheet.macroenabled.12"
            "xlsx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
            "xlt" => "application/vnd.ms-excel"
            "xltm" => "application/vnd.ms-excel.template.macroenabled.12"
            "xltx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.template"
            "xlw" => "application/vnd.ms-excel"
            "xm" => "audio/xm"
            "xml" => "application/xml"
            "xo" => "application/vnd.olpc-sugar"
            "xop" => "application/xop+xml"
            "xpi" => "application/x-xpinstall"
            "xpl" => "application/xproc+xml"
            "xpm" => "image/x-xpixmap"
            "xpr" => "application/vnd.is-xpr"
            "xps" => "application/vnd.ms-xpsdocument"
            "xpw" => "application/vnd.intercon.formnet"
            "xpx" => "application/vnd.intercon.formnet"
            "xsl" => "application/xml"
            "xslt" => "application/xslt+xml"
            "xsm" => "application/vnd.syncml+xml"
            "xspf" => "application/xspf+xml"
            "xul" => "application/vnd.mozilla.xul+xml"
            "xvm" => "application/xv+xml"
            "xvml" => "application/xv+xml"
            "xwd" => "image/x-xwindowdump"
            "xyz" => "chemical/x-xyz"
            "xz" => "application/x-xz"
            "yang" => "application/yang"
            "yin" => "application/yin+xml"
            "z1" => "application/x-zmachine"
            "z2" => "application/x-zmachine"
            "z3" => "application/x-zmachine"
            "z4" => "application/x-zmachine"
            "z5" => "application/x-zmachine"
            "z6" => "application/x-zmachine"
            "z7" => "application/x-zmachine"
            "z8" => "application/x-zmachine"
            "zaz" => "application/vnd.zzazz.deck+xml"
            "zip" => "application/zip"
            "zir" => "application/vnd.zul"
            "zirz" => "application/vnd.zul"
            "zmm" => "application/vnd.handheld-entertainment+xml"
            123 => "application/vnd.lotus-1-2-3"
          ]
          -headers: Swift_Mime_SimpleHeaderSet�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderSet.php#L16�\^�]8;;�\ {#5062
            -factory: Swift_Mime_SimpleHeaderFactory�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderFactory.php#L18�\^�]8;;�\ {#5061
              -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5053
                #charStream: Swift_CharacterStream_NgCharacterStream�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterStream\NgCharacterStream.php#L16�\^�]8;;�\ {#5052
                  -charReader: null
                  -charReaderFactory: Swift_CharacterReaderFactory_SimpleCharacterReaderFactory�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterReaderFactory\SimpleCharacterReaderFactory.php#L16�\^�]8;;�\ {#5081}
                  -charset: "utf-8"
                  -datas: ""
                  -datasSize: 0
                  -map: null
                  -mapType: 0
                  -charCount: 0
                  -currentPos: 0
                }
                #filter: null
                #safeMap: array:68 [
                  97 => "a"
                  98 => "b"
                  99 => "c"
                  100 => "d"
                  101 => "e"
                  102 => "f"
                  103 => "g"
                  104 => "h"
                  105 => "i"
                  106 => "j"
                  107 => "k"
                  108 => "l"
                  109 => "m"
                  110 => "n"
                  111 => "o"
                  112 => "p"
                  113 => "q"
                  114 => "r"
                  115 => "s"
                  116 => "t"
                  117 => "u"
                  118 => "v"
                  119 => "w"
                  120 => "x"
                  121 => "y"
                  122 => "z"
                  65 => "A"
                  66 => "B"
                  67 => "C"
                  68 => "D"
                  69 => "E"
                  70 => "F"
                  71 => "G"
                  72 => "H"
                  73 => "I"
                  74 => "J"
                  75 => "K"
                  76 => "L"
                  77 => "M"
                  78 => "N"
                  79 => "O"
                  80 => "P"
                  81 => "Q"
                  82 => "R"
                  83 => "S"
                  84 => "T"
                  85 => "U"
                  86 => "V"
                  87 => "W"
                  88 => "X"
                  89 => "Y"
                  90 => "Z"
                  48 => "0"
                  49 => "1"
                  50 => "2"
                  51 => "3"
                  52 => "4"
                  53 => "5"
                  54 => "6"
                  55 => "7"
                  56 => "8"
                  57 => "9"
                  32 => " "
                  33 => "!"
                  42 => "*"
                  43 => "+"
                  45 => "-"
                  47 => "/"
                ]
              }
              -paramEncoder: Swift_Encoder_Rfc2231Encoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Encoder\Rfc2231Encoder.php#L16�\^�]8;;�\ {#5056
                -charStream: Swift_CharacterStream_NgCharacterStream�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterStream\NgCharacterStream.php#L16�\^�]8;;�\ {#5058
                  -charReader: null
                  -charReaderFactory: Swift_CharacterReaderFactory_SimpleCharacterReaderFactory�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterReaderFactory\SimpleCharacterReaderFactory.php#L16�\^�]8;;�\ {#5081}
                  -charset: "utf-8"
                  -datas: ""
                  -datasSize: 0
                  -map: null
                  -mapType: 0
                  -charCount: 0
                  -currentPos: 0
                }
              }
              -emailValidator: Egulias\EmailValidator\EmailValidator�]8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8�\^�]8;;�\ {#5093}
              -charset: "utf-8"
              -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25�\^�]8;;�\ {#5055}
            }
            -headers: array:4 [
              "content-transfer-encoding" => array:1 [
                0 => Swift_Mime_Headers_UnstructuredHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\UnstructuredHeader.php#L16�\^�]8;;�\ {#5064
                  -value: "base64"
                  -name: "Content-Transfer-Encoding"
                  -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5053}
                  -lineLength: 78
                  -lang: null
                  -charset: "utf-8"
                  -cachedValue: null
                }
              ]
              "content-disposition" => array:1 [
                0 => Swift_Mime_Headers_ParameterizedHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\ParameterizedHeader.php#L16�\^�]8;;�\ {#5054
                  -paramEncoder: Swift_Encoder_Rfc2231Encoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Encoder\Rfc2231Encoder.php#L16�\^�]8;;�\ {#5056}
                  -params: array:1 [
                    "filename" => "sendgrid/x-smtpapi"
                  ]
                  -value: "inline"
                  -name: "Content-Disposition"
                  -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5053}
                  -lineLength: 78
                  -lang: null
                  -charset: "utf-8"
                  -cachedValue: null
                }
              ]
              "content-type" => array:1 [
                0 => Swift_Mime_Headers_ParameterizedHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\ParameterizedHeader.php#L16�\^�]8;;�\ {#5046
                  -paramEncoder: null
                  -params: array:1 [
                    "name" => "sendgrid/x-smtpapi"
                  ]
                  -value: "application/octet-stream"
                  -name: "Content-Type"
                  -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16�\^�]8;;�\ {#5053}
                  -lineLength: 78
                  -lang: null
                  -charset: "utf-8"
                  -cachedValue: null
                }
              ]
              "content-id" => array:1 [
                0 => Swift_Mime_Headers_IdentificationHeader�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\IdentificationHeader.php#L20�\^�]8;;�\ {#5045
                  -ids: array:1 [
                    0 => "54b50e08a8c26f98eb28970cd0de604f@swift.generated"
                  ]
                  -emailValidator: Egulias\EmailValidator\EmailValidator�]8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8�\^�]8;;�\ {#5093}
                  -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25�\^�]8;;�\ {#5051}
                  -name: "Content-ID"
                  -encoder: null
                  -lineLength: 78
                  -lang: null
                  -charset: "utf-8"
                  -cachedValue: null
                }
              ]
            ]
            -order: array:2 [
              "content-type" => 0
              "content-transfer-encoding" => 1
            ]
            -required: []
            -charset: "utf-8"
          }
          -body: "{"personalizations":[{"custom_args":{"email_subject":"Remote Start Quote 102cmlzspagej5p - UNDEFINED UNDEFINED UNDEFINED anything","domain":"Remotely Started","tracking_id":13165,"tracking_model":"App\\Models\\Quote\\Quote"}}]}"
          -encoder: Swift_Mime_ContentEncoder_Base64ContentEncoder�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\ContentEncoder\Base64ContentEncoder.php#L16�\^�]8;;�\ {#5057}
          -idGenerator: Swift_Mime_IdGenerator�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\IdGenerator.php#L14�\^�]8;;�\ {#4652}
          -boundary: null
          -compositeRanges: array:3 [
            "multipart/mixed" => array:2 [
              0 => 16
              1 => 256
            ]
            "multipart/alternative" => array:2 [
              0 => 256
              1 => 4096
            ]
            "multipart/related" => array:2 [
              0 => 4096
              1 => 65536
            ]
          ]
          -compoundLevelFilters: array:1 [
            69632 => array:1 [
              4096 => array:2 [
                "text/plain" => 4096
                "text/html" => 65536
              ]
            ]
          ]
          -nestingLevel: 4096
          -cache: Swift_KeyCache_DiskKeyCache�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\KeyCache\DiskKeyCache.php#L16�\^�]8;;�\ {#4530}
          -immediateChildren: []
          -children: []
          -maxLineLength: 78
          -alternativePartOrder: array:3 [
            "text/plain" => 1
            "text/html" => 2
            "multipart/related" => 3
          ]
          -id: "54b50e08a8c26f98eb28970cd0de604f@swift.generated"
          -cacheKey: "1aec1b4352c9f3846f82e29e865851dd"
          #userContentType: "application/octet-stream"
        }
      ]
      -children: array:1 [
        0 => Swift_Image�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Image.php#L16�\^�]8;;�\ {#5059}
      ]
      -maxLineLength: 78
      -alternativePartOrder: array:3 [
        "text/plain" => 1
        "text/html" => 2
        "multipart/related" => 3
      ]
      -id: "f5675bd7d499190eef951332186382e9@swift.generated"
      -cacheKey: "0d8e412636fe01d6c53d2d854dd8e39f"
      #userContentType: null
    }
  ]
  -children: array:2 [
    0 => Swift_MimePart�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\MimePart.php#L16�\^�]8;;�\ {#5076}
    1 => Swift_Image�]8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Image.php#L16�\^�]8;;�\ {#5059}
  ]
  -maxLineLength: 78
  -alternativePartOrder: array:3 [
    "text/plain" => 1
    "text/html" => 2
    "multipart/related" => 3
  ]
  -id: "338afa852f559198d1773c3bac20e4eb@swift.generated"
  -cacheKey: "c52e6fab18a60f2a0dda361278c2b813"
  #userContentType: "text/html"
  -nestingLevel: 4096
}
Process finished with exit code 1

 

Link to comment
Share on other sites

Turns out this was a really simple fix.  After looking through the s-ichikawa/laravel-sendgrid-driver code, I found how it does it and changed one thing in the handle method of my code (I put a comment just above it in the code below).  I honestly have no idea what the mergeCustomArgs method does for me.  From my testing I don't think it ever actually applied anything to the args array anyway, at least in the context I've been using it.  So I commented that out.

<?php

namespace App\Listeners;

use App\Helpers\Mail\MailTrackerSetup;
use Illuminate\Mail\Events\MessageSending;
use SendGrid\Mail\Header;
use Sichikawa\LaravelSendgridDriver\SendGrid;
use Sichikawa\LaravelSendgridDriver\Transport\SendgridTransport;
use Symfony\Component\Mime\Header\Headers;
use Symfony\Component\Mime\Header\UnstructuredHeader;

/**
 * Class SetSendgridCustomArg
 * @package App\Listeners
 */
class SetSendgridCustomArg
{
    use SendGrid {
        sgEncode as encode;
    }

    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Handle the event.
     *
     * @param  MessageSending  $event
     * @return void
     */
    public function handle(MessageSending $event)
    {
        $args = [
            'personalizations' => [
                [
                    'custom_args' => [
                        'email_subject' => $event->message->getSubject(),
                        'domain' => settings('site_name'),
                    ],
                ],
            ],
        ];

        $args['personalizations'][0]['custom_args'] = array_merge( $args['personalizations'][0]['custom_args'], (new MailTrackerSetup($event->data))->getTrackingDetails());

//        $args = $this->mergeCustomArgs($event, $args);

      	// All I changed was this line.
        $event->message->embed(static::sgEncode($args), SendgridTransport::REQUEST_BODY_PARAMETER);
    }

    /**
     * @param $event
     * @param $args
     * @return mixed
     */
    private function mergeCustomArgs($event, $args)
    {
//        if(count($event->message->getChildren())){
//            foreach($event->message->getChildren() as $child){
//                if($child instanceof \Swift_Image){
//                    $params = json_decode($child->getBody(), true);
//
//                    if(isset($params['personalizations'][0]['custom_args'])){
//                        foreach($params['personalizations'][0]['custom_args'] as $key => $custom_arg) {
//                            $args['personalizations'][0]['custom_args'][$key] = $custom_arg;
//                        }
//                    }
//                }
//            }
//        }

        return $args;
    }
}

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.