<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Mime\Encoder; /** * An IDN email address encoder. * * Encodes the domain part of an address using IDN. This is compatible will all * SMTP servers. * * Note: It leaves the local part as is. In case there are non-ASCII characters * in the local part then it depends on the SMTP Server if this is supported. * * @author Christian Schmidt */ final class IdnAddressEncoder implements AddressEncoderInterface { /** * Encodes the domain part of an address using IDN. */ public function encodeString(string $address): string { $i = strrpos($address, '@'); if (false !== $i) { $local = substr($address, 0, $i); $domain = substr($address, $i + 1); if (preg_match('/[^\x00-\x7F]/', $domain)) { $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)); } } return $address; } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
AddressEncoderInterface.php | File | 689 B | 0644 |
|
Base64ContentEncoder.php | File | 1.3 KB | 0644 |
|
Base64Encoder.php | File | 1.25 KB | 0644 |
|
Base64MimeHeaderEncoder.php | File | 1.26 KB | 0644 |
|
ContentEncoderInterface.php | File | 668 B | 0644 |
|
EightBitContentEncoder.php | File | 834 B | 0644 |
|
EncoderInterface.php | File | 717 B | 0644 |
|
IdnAddressEncoder.php | File | 1.28 KB | 0644 |
|
MimeHeaderEncoderInterface.php | File | 467 B | 0644 |
|
QpContentEncoder.php | File | 1.78 KB | 0644 |
|
QpEncoder.php | File | 7.7 KB | 0644 |
|
QpMimeHeaderEncoder.php | File | 1.05 KB | 0644 |
|
Rfc2231Encoder.php | File | 1.4 KB | 0644 |
|