|
![]() |
#1 |
Участник
|
В продолжении темы.
Действительно, предложенный способ конвертации, похоже, помогает решить проблему X++: System.Globalization.IdnMapping idn; str ret; ; try { idn = new System.Globalization.IdnMapping(); ret = idn.GetAscii("письмо.рф"); } catch { error(AifUtil::getClrErrorMessage()); } X++: mailAddressCollection.Add(mailTo); Это все имеет смысл делать для NET3.5 (Ax2009) В более поздних версиях NET (4.5 например) этой конвертации не требуется - функция mailAddressCollection.Add принимает на вход кириллицу без конвертации (видимо конвертацию встроили внутрь) В результате выясняется, что ошибка " 501 5.1.3 Invalid Address." является, скорее всего ошибкой, возвращаемой используемым SMTP сервером, а не почтовым клиентом, используемым в Ax. По крайней мере, в итоге оба варианта (NET и COM "CDO.Message") возвращают одну и ту же ошибку. Будем обновлять (менять) SMTP сервер... |
|
|
За это сообщение автора поблагодарили: Ruff (2). |
![]() |
#2 |
Участник
|
В итоге, проблему решил таким образом:
- создать новую статичную функцию преобразования кириллических доменов в email адресах X++: // Преобразовать email содержащий кириллические символы в домене получателя static client server str convertEmailCyr(str _email) { int pos; str domain; str user; str ret; System.Globalization.IdnMapping idn; int len; ; len = strLen(_email); if (subStr(_email, len - 1, 2) != "рф") return _email; pos = strfind(_email, "@", 1, len); if (pos == 0) return _email; // это странно user = subStr(_email, 1, pos - 1); domain = subStr(_email, pos + 1, len - pos); new InteropPermission(InteropKind::ClrInterop).assert(); try { idn = new System.Globalization.IdnMapping(); domain = idn.GetAscii(domain); } catch { return _email; } ret = strFmt("%1@%2", user, domain); return ret; } X++: // Add item to the collection void appendAddress(str addr, str name='') { str address; str addresses; ; // new addr = convertEmailCyr(addr); if (prmisdefault(name)) { address = addr; } else { address = name + '[' + addr + ']'; } ... |
|
|
За это сообщение автора поблагодарили: gl00mie (2). |
![]() |
#3 |
Дмитрий Ерин
|
Если это не "образец", а окончательная редакция кода, то не забудьте про .рус, .укр, .бел, .москва, .дети, .сайт, .онлайн и т.д. Полный список наверно можно нагуглить где-нить на сайте ICANN, а с учетом того, что домены первого уровня теперь продают почти всем желающим, может быть стоит сделать более универсальную проверку на кириллицу? Или вообще не делать, ведь латиница в Punycode остается без изменений...
|
|
|
За это сообщение автора поблагодарили: someOne (5). |
Теги |
email кириллицей, кирилица |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|