mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-25 10:09:20 +03:00
IDNA support (beta)
This commit is contained in:
parent
0ca00dec40
commit
e82108ac85
31 changed files with 3839 additions and 308 deletions
|
|
@ -1883,4 +1883,62 @@ class Utils
|
|||
'.aero .asia .biz .cat .com .coop .edu .gov .info .int .jobs .mil .mobi .museum .name .net .org .pro .tel .travel .xxx .ac .ad .ae .af .ag .ai .al .am .an .ao .aq .ar .as .at .au .aw .ax .az .ba .bb .bd .be .bf .bg .bh .bi .bj .bm .bn .bo .br .bs .bt .bv .bw .by .bz .ca .cc .cd .cf .cg .ch .ci .ck .cl .cm .cn .co .cr .cs .cu .cv .cx .cy .cz .dd .de .dj .dk .dm .do .dz .ec .ee .eg .er .es .et .eu .fi .fj .fk .fm .fo .fr .ga .gb .gd .ge .gf .gg .gh .gi .gl .gm .gn .gp .gq .gr .gs .gt .gu .gw .gy .hk .hm .hn .hr .ht .hu .id .ie .il .im .in .io .iq .ir .is .it .je .jm .jo .jp .ke .kg .kh .ki .km .kn .kp .kr .kw .ky .kz .la .lb .lc .li .lk .lr .ls .lt .lu .lv .ly .ma .mc .md .me .mg .mh .mk .ml .mm .mn .mo .mp .mq .mr .ms .mt .mu .mv .mw .mx .my .mz .na .nc .ne .nf .ng .ni .nl .no .np .nr .nu .nz .om .pa .pe .pf .pg .ph .pk .pl .pm .pn .pr .ps .pt .pw .py .qa .re .ro .rs .ru . .rw .sa .sb .sc .sd .se .sg .sh .si .sj .sk .sl .sm .sn .so .sr .st .su .sv .sy .sz .tc .td .tf .tg .th .tj .tk .tl .tm .tn .to .tp .tr .tt .tv .tw .tz .ua .ug .uk .us .uy .uz .va .vc .ve .vg .vi .vn .vu .wf .ws .ye .yt .za .zm .zw'
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Net_IDNA2
|
||||
*/
|
||||
private static function idn()
|
||||
{
|
||||
static $oIdn = null;
|
||||
if (null === $oIdn)
|
||||
{
|
||||
include_once MAILSO_LIBRARY_ROOT_PATH.'Vendors/NET/IDNA2.php';
|
||||
$oIdn = new \Net_IDNA2();
|
||||
}
|
||||
|
||||
return $oIdn;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sDomain
|
||||
* @param bool $bLowerIfAscii = false
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function IdnToUtf8($sDomain, $bLowerIfAscii = false)
|
||||
{
|
||||
if ($sDomain && \preg_match('/(^|\.)xn--/i', $sDomain))
|
||||
{
|
||||
try
|
||||
{
|
||||
$sDomain = self::idn()->decode($sDomain);
|
||||
}
|
||||
catch (\Exception $oException) {}
|
||||
}
|
||||
|
||||
$sDomain = $bLowerIfAscii ? \MailSo\Base\Utils::StrToLowerIfAscii($sDomain) : $sDomain;
|
||||
return $sDomain;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sDomain
|
||||
* @param bool $bLowerIfAscii = false
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function IdnToAscii($sDomain, $bLowerIfAscii = false)
|
||||
{
|
||||
$sDomain = $bLowerIfAscii ? \MailSo\Base\Utils::StrToLowerIfAscii($sDomain) : $sDomain;
|
||||
|
||||
if ($sDomain && \preg_match('/[^\x20-\x7E]/', $sDomain))
|
||||
{
|
||||
try
|
||||
{
|
||||
$sDomain = self::idn()->encode($sDomain);
|
||||
}
|
||||
catch (\Exception $oException) {}
|
||||
}
|
||||
|
||||
return $sDomain;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue