first commit
This commit is contained in:
@ -0,0 +1,50 @@
|
||||
<?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($address, 0, $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', $local, idn_to_ascii($domain, 0, INTL_IDNA_VARIANT_UTS46));
|
||||
}
|
||||
}
|
||||
|
||||
return $address;
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
<?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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* A UTF-8 email address encoder.
|
||||
*
|
||||
* Returns the email address verbatimly in UTF-8 as permitted by RFC 6531 and
|
||||
* RFC 6532. It supports addresses containing non-ASCII characters in both
|
||||
* local-part and domain (i.e. on both sides of @).
|
||||
*
|
||||
* This encoder must be used together with Swift_Transport_Esmtp_SmtpUtf8Handler
|
||||
* and requires that the outbound SMTP server supports the SMTPUTF8 extension.
|
||||
*
|
||||
* If your outbound SMTP server does not support SMTPUTF8, use
|
||||
* Swift_AddressEncoder_IdnAddressEncoder instead. This allows sending to email
|
||||
* addresses with non-ASCII characters in the domain, but not in local-part.
|
||||
*
|
||||
* @author Christian Schmidt
|
||||
*/
|
||||
class Swift_AddressEncoder_Utf8AddressEncoder implements Swift_AddressEncoder
|
||||
{
|
||||
/**
|
||||
* Returns the address verbatimly.
|
||||
*/
|
||||
public function encodeString(string $address): string
|
||||
{
|
||||
return $address;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user