Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
/*
4
 * This file is part of the Symfony package.
5
 *
6
 * (c) Fabien Potencier <fabien@symfony.com>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
 
12
namespace Symfony\Component\Mime\Encoder;
13
 
14
/**
15
 * An IDN email address encoder.
16
 *
17
 * Encodes the domain part of an address using IDN. This is compatible will all
18
 * SMTP servers.
19
 *
20
 * Note: It leaves the local part as is. In case there are non-ASCII characters
21
 * in the local part then it depends on the SMTP Server if this is supported.
22
 *
23
 * @author Christian Schmidt
24
 */
25
final class IdnAddressEncoder implements AddressEncoderInterface
26
{
27
    /**
28
     * Encodes the domain part of an address using IDN.
29
     */
30
    public function encodeString(string $address): string
31
    {
32
        $i = strrpos($address, '@');
33
        if (false !== $i) {
34
            $local = substr($address, 0, $i);
35
            $domain = substr($address, $i + 1);
36
 
37
            if (preg_match('/[^\x00-\x7F]/', $domain)) {
38
                $address = sprintf('%s@%s', $local, idn_to_ascii($domain, \IDNA_DEFAULT | \IDNA_USE_STD3_RULES | \IDNA_CHECK_BIDI | \IDNA_CHECK_CONTEXTJ | \IDNA_NONTRANSITIONAL_TO_ASCII, \INTL_IDNA_VARIANT_UTS46));
39
            }
40
        }
41
 
42
        return $address;
43
    }
44
}