В итоге, проблему решил таким образом:
- создать новую статичную функцию преобразования кириллических доменов в 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;
}
- далее вставить эту функцию в метод класса SysMailerAddressField
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 + ']';
}
...
После чего почту можно отправлять на кириллические адреса из AX2009