Classes List

Swift_AddressEncoder_IdnAddressEncoder

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
<?php

/* * This file is part of SwiftMailer. * (c) 2018 Christian Schmidt * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */


/** * An IDN email address encoder. * * Encodes the domain part of an address using IDN. This is compatible will all * SMTP servers. * * This encoder does not support email addresses with non-ASCII characters in * local-part (the substring before @). To send to such addresses, use * Swift_AddressEncoder_Utf8AddressEncoder together with * Swift_Transport_Esmtp_SmtpUtf8Handler. Your outbound SMTP server must support * the SMTPUTF8 extension. * * @author Christian Schmidt */
class Swift_AddressEncoder_IdnAddressEncoder implements Swift_AddressEncoder
{
    /** * Encodes the domain part of an address using IDN. * * @throws Swift_AddressEncoderException If local-part contains non-ASCII characters */
    public function encodeString(string $address): string
    {
        $i = strrpos($address'@');
        if (false !== $i) {
            $local = substr($address0$i);
            $domain = substr($address$i + 1);

            if (preg_match('/[^\x00-\x7F]/'$local)) {
                throw new Swift_AddressEncoderException('Non-ASCII characters not supported in local-part'$address);
            }

            if (preg_match('/[^\x00-\x7F]/'$domain)) {
                $address = sprintf('%s@%s'$localidn_to_ascii($domain0INTL_IDNA_VARIANT_UTS46));
            }
        }

        return $address;
    }
}