28.02.2012, 11:49 | #1 |
Участник
|
И снова проблема с кодировкой русских email в Ax2009
Коллеги, есть проблема с отправкой email из MS Dynamics Ax 2009. Письма на русском языке, посылаемые из Аксапты выглядят странно: тема сообщения отображается странно, а вот тело - дрякозяблами.
Эту тему я читал, не помогло. Если попробовать создать шаблон email сообщения на русском языке - при сохранении нас радостно встречают либо вопросительные знаки либо опять же дрякозяблы. Буду рад помощи, сам уже закопался. Axapta 2009, SP1 работает с MS SQL Server, AOS поднят на Windows 7 64 bit. |
|
28.02.2012, 13:18 | #2 |
Участник
|
mikki_messer, AOS развёрнут на физическом сервере или виртуальном ?
__________________
Дмитрий |
|
28.02.2012, 13:41 | #3 |
Участник
|
Damn, на физическом. Это тестовый сервер - фактически, это моя рабочая станция.
|
|
28.02.2012, 14:32 | #4 |
Участник
|
каким программным кодом отсылаются письма ? на стороне сервера или клиента код выполняется ?
__________________
Дмитрий |
|
28.02.2012, 15:05 | #5 |
Участник
|
Damn, пробовал разные варианты:
например X++: static void SendMail(container _toAddr, str _subject, str _body, container _attacments) { SysMailer mailer = new SysMailer(); SysUserInfo users = SysUserInfo::find(); SysEmailParameters parameters; int i; ; mailer.fromAddress(users.Email); for (i = 1; i <= conlen(_toAddr); i++) mailer.tos().appendAddress(conpeek(_toAddr, i)); for (i = 1; i <= conlen(_attacments); i++) mailer.attachments().add(conpeek(_attacments, i)); mailer.subject(_subject); mailer.htmlBody(_body); parameters = SysEmailParameters::find(); mailer.SMTPRelayServer(parameters.SMTPRelayServerName, parameters.SMTPPortNumber,parameters.SMTPUserName,SysEmailParameters::password(),parameters.NTLM); mailer.sendMail(); } X++: static void TestMailBatch(Args _args) { SysEmailBatch SysEmailBatch; ; SysEmailBatch = new SysEmailBatch(); SysEmailBatch.parmEmailAddr("im@mail.ru"); SysEmailBatch.parmMessageBody("test"); SysEmailBatch.parmSenderAddr("test@mail.ru"); SysEmailBatch.sendToBatch("mail"); SysEmailBatch.run(); } |
|
28.02.2012, 17:04 | #6 |
Участник
|
А если в первом варианте добавить строчку :
X++: mailer.bodyCharSet('UTF-8'); Во втором варианте такая строчка уже есть, но класс SysEmailBatch выполняется на сервере. Что-то мне кажется что проблема тут в Windows 7. Не пробовал я ещё использовать АОС в такой операционке.
__________________
Дмитрий |
|
28.02.2012, 17:14 | #7 |
Участник
|
Увы, тогда не компилируется. В 2009-й ахапке такого свойства у SysMailer нет
|
|
28.02.2012, 17:36 | #8 |
Участник
|
Очень странно. Я привёл кусочек кода как раз из Ax2009.
__________________
Дмитрий |
|
28.02.2012, 18:34 | #9 |
Участник
|
Смотрели эту тему?
__________________
Ivanhoe as is.. |
|
28.02.2012, 23:53 | #10 |
Участник
|
Damn, похоже, у меня не хватает какого-то обновления?
У вас точно X++: mailer.bodyCharSet('UTF-8'); |
|
28.02.2012, 23:54 | #11 |
Участник
|
Цитата:
Сообщение от Ivanhoe
Смотрели эту тему?
|
|
29.02.2012, 06:47 | #12 |
Участник
|
посмотрите след.темы:
Снова о кракозябрах в сообщениях эл.почты Ax4: Баг в \Classes\SysMailer\bodyCharSet или классы SysEmail* например SysEmailDistributor.processEmails у меня Ax 4.0, приведенные выше примеры работают... может проблема не с АХ, а с настройками почтовика. Удачи. Последний раз редактировалось kaw; 29.02.2012 в 06:58. |
|
|
За это сообщение автора поблагодарили: mikki_messer (1). |
29.02.2012, 08:02 | #13 |
Участник
|
Цитата:
Вот так он выглядит у меня: X++: // AX2009 public str bodyCharSet(str arg='') { Com comBodyPart = _com.BodyPart(); ; if (!prmIsDefault(arg)) comBodyPart.CharSet(arg); return comBodyPart.CharSet(); } Для централизованной смены кодировки у себя использую вот этот способ Снова о кракозябрах в сообщениях эл.почты. С единственным отличием вместо "koi8r" использую "Windows-1251". Работает! Последний раз редактировалось S.Kuskov; 29.02.2012 в 08:14. |
|
|
За это сообщение автора поблагодарили: mikki_messer (1). |
29.02.2012, 11:18 | #14 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Я не знаю точно в каком обновлении это исправили. У себя я без обновлений добавлял этот метод в класс SysMailer вручную .
Вот так он выглядит у меня: X++: // AX2009 public str bodyCharSet(str arg='') { Com comBodyPart = _com.BodyPart(); ; if (!prmIsDefault(arg)) comBodyPart.CharSet(arg); return comBodyPart.CharSet(); } Для централизованной смены кодировки у себя использую вот этот способ Снова о кракозябрах в сообщениях эл.почты. С единственным отличием вместо "koi8r" использую "Windows-1251". Работает! |
|
07.09.2015, 17:10 | #15 |
Участник
|
Столкнулся на днях снова с кракозябрами в письмах.
Ax2009 SP1 HFR5. Отправка писем через стандартный класс SysMailer, то есть через COM-объект 'CDO.Message'. Кракозябры появились в письмах у пользователей, чьи почтовые ящики находятся на почтовом сервере с Exchange 2013. CDO.Message и Exchange 2013 - не совместимы ? Если отправлять письма через System.Net.Mail.SmtpClient, то с символами проблем нет. В Ax2012 смотрю CDO.Message уже не используется.
__________________
Дмитрий |
|
07.09.2015, 19:56 | #16 |
Участник
|
Не знаю на счет совместимости CDO.Message и MS Exchange 2013, не сталкивался, но в целом ничто не мешает переписать SysMailer на использование System.Net.Mail.SmtpClient, см. готовый пример здесь: Почту перевели на outlook.office365.com. SysMailer стал бесполезен?
|
|
07.09.2015, 22:09 | #17 |
Участник
|
Я думаю, что готовый пример можно взять и из Ax2012, там же есть класс SysMailerNET. Интересна была именно совместимость CDO.Message и Exchange 2013.
__________________
Дмитрий |
|
09.09.2015, 09:28 | #18 |
Участник
|
Понял в чём проблема. Совместимость тут ни при чём.
Кракозябры возникали в письмах, рассылаемых классом EventNotificationBatch. А в нём явного вызова mailer.bodyCharSet('UTF-8') нет, в отличии от классов SysEmailBatch и SysEmailDistributor. Даже в HotfixRollup 8. Exchange 2010 это проглатывал, а Exchange 2013 уже нет.
__________________
Дмитрий |
|
|
За это сообщение автора поблагодарили: trud (2), gl00mie (3). |