AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 28.02.2012, 11:49   #1  
mikki_messer ist offline
mikki_messer
Участник
 
91 / 20 (1) +++
Registriert seit: 20.04.2010
Ort: Ростов-на-Дону
И снова проблема с кодировкой русских email в Ax2009
Коллеги, есть проблема с отправкой email из MS Dynamics Ax 2009. Письма на русском языке, посылаемые из Аксапты выглядят странно: тема сообщения отображается странно, а вот тело - дрякозяблами.
Эту тему я читал, не помогло.
Если попробовать создать шаблон email сообщения на русском языке - при сохранении нас радостно встречают либо вопросительные знаки либо опять же дрякозяблы. Буду рад помощи, сам уже закопался.

Axapta 2009, SP1 работает с MS SQL Server, AOS поднят на Windows 7 64 bit.
Alt 28.02.2012, 13:18   #2  
Damn ist offline
Damn
Участник
 
436 / 154 (6) ++++++
Registriert seit: 28.05.2003
Ort: в глуши
mikki_messer, AOS развёрнут на физическом сервере или виртуальном ?
__________________
Дмитрий
Alt 28.02.2012, 13:41   #3  
mikki_messer ist offline
mikki_messer
Участник
 
91 / 20 (1) +++
Registriert seit: 20.04.2010
Ort: Ростов-на-Дону
Damn, на физическом. Это тестовый сервер - фактически, это моя рабочая станция.
Alt 28.02.2012, 14:32   #4  
Damn ist offline
Damn
Участник
 
436 / 154 (6) ++++++
Registriert seit: 28.05.2003
Ort: в глуши
каким программным кодом отсылаются письма ? на стороне сервера или клиента код выполняется ?
__________________
Дмитрий
Alt 28.02.2012, 15:05   #5  
mikki_messer ist offline
mikki_messer
Участник
 
91 / 20 (1) +++
Registriert seit: 20.04.2010
Ort: Ростов-на-Дону
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();
}
Выполнял на клиенте. Это важно?
Alt 28.02.2012, 17:04   #6  
Damn ist offline
Damn
Участник
 
436 / 154 (6) ++++++
Registriert seit: 28.05.2003
Ort: в глуши
А если в первом варианте добавить строчку :
X++:
mailer.bodyCharSet('UTF-8');
и выполнить на стороне клиента ?
Во втором варианте такая строчка уже есть, но класс SysEmailBatch выполняется на сервере.
Что-то мне кажется что проблема тут в Windows 7. Не пробовал я ещё использовать АОС в такой операционке.
__________________
Дмитрий
Alt 28.02.2012, 17:14   #7  
mikki_messer ist offline
mikki_messer
Участник
 
91 / 20 (1) +++
Registriert seit: 20.04.2010
Ort: Ростов-на-Дону
Увы, тогда не компилируется. В 2009-й ахапке такого свойства у SysMailer нет
Alt 28.02.2012, 17:36   #8  
Damn ist offline
Damn
Участник
 
436 / 154 (6) ++++++
Registriert seit: 28.05.2003
Ort: в глуши
Очень странно. Я привёл кусочек кода как раз из Ax2009.
__________________
Дмитрий
Alt 28.02.2012, 18:34   #9  
Ivanhoe ist offline
Ivanhoe
Участник
Benutzerbild von Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4.143 / 2161 (81) +++++++++
Registriert seit: 29.09.2005
Ort: Санкт-Петербург
Смотрели эту тему?
__________________
Ivanhoe as is..
Alt 28.02.2012, 23:53   #10  
mikki_messer ist offline
mikki_messer
Участник
 
91 / 20 (1) +++
Registriert seit: 20.04.2010
Ort: Ростов-на-Дону
Damn, похоже, у меня не хватает какого-то обновления?
У вас точно
X++:
mailer.bodyCharSet('UTF-8');
- задаётся для SysMailer? Или там какой-то его потомок используется?
Alt 28.02.2012, 23:54   #11  
mikki_messer ist offline
mikki_messer
Участник
 
91 / 20 (1) +++
Registriert seit: 20.04.2010
Ort: Ростов-на-Дону
Zitat:
Zitat von Ivanhoe Beitrag anzeigen
Смотрели эту тему?
Спасибо за ссылку, в редакторе действительно была эта проблема. Теперь в редакторе всё хорошо, но при отправке по-прежнему всё плохо - сплошные дрякозяблы
Alt 29.02.2012, 06:47   #12  
kaw ist offline
kaw
Участник
 
122 / 35 (2) +++
Registriert seit: 23.03.2004
Ort: Новосибирск
посмотрите след.темы:

Снова о кракозябрах в сообщениях эл.почты
Ax4: Баг в \Classes\SysMailer\bodyCharSet

или классы SysEmail*
например SysEmailDistributor.processEmails

у меня Ax 4.0, приведенные выше примеры работают... может проблема не с АХ, а с настройками почтовика.
Удачи.

Geändert von kaw (29.02.2012 um 06:58 Uhr)
This post has been rated by: mikki_messer (1).
Alt 29.02.2012, 08:02   #13  
S.Kuskov ist offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3.450 / 1792 (66) ++++++++
Registriert seit: 28.04.2007
Ort: Калуга
Zitat:
Zitat von mikki_messer Beitrag anzeigen
Damn, похоже, у меня не хватает какого-то обновления?
У вас точно
X++:
mailer.bodyCharSet('UTF-8');
- задаётся для SysMailer? Или там какой-то его потомок используется?
Я не знаю точно в каком обновлении это исправили. У себя я без обновлений добавлял этот метод в класс SysMailer вручную .
Вот так он выглядит у меня:
X++:
// AX2009
public str bodyCharSet(str arg='')
{
    Com comBodyPart = _com.BodyPart();
    ;

    if (!prmIsDefault(arg))
        comBodyPart.CharSet(arg);

    return comBodyPart.CharSet();
}

Для централизованной смены кодировки у себя использую вот этот способ Снова о кракозябрах в сообщениях эл.почты. С единственным отличием вместо "koi8r" использую "Windows-1251". Работает!

Geändert von S.Kuskov (29.02.2012 um 08:14 Uhr)
This post has been rated by: mikki_messer (1).
Alt 29.02.2012, 11:18   #14  
mikki_messer ist offline
mikki_messer
Участник
 
91 / 20 (1) +++
Registriert seit: 20.04.2010
Ort: Ростов-на-Дону
Zitat:
Zitat von S.Kuskov Beitrag anzeigen
Я не знаю точно в каком обновлении это исправили. У себя я без обновлений добавлял этот метод в класс SysMailer вручную .
Вот так он выглядит у меня:
X++:
// AX2009
public str bodyCharSet(str arg='')
{
    Com comBodyPart = _com.BodyPart();
    ;

    if (!prmIsDefault(arg))
        comBodyPart.CharSet(arg);

    return comBodyPart.CharSet();
}

Для централизованной смены кодировки у себя использую вот этот способ Снова о кракозябрах в сообщениях эл.почты. С единственным отличием вместо "koi8r" использую "Windows-1251". Работает!
Спасибо, то, что надо!
Alt 07.09.2015, 17:10   #15  
Damn ist offline
Damn
Участник
 
436 / 154 (6) ++++++
Registriert seit: 28.05.2003
Ort: в глуши
Столкнулся на днях снова с кракозябрами в письмах.
Ax2009 SP1 HFR5. Отправка писем через стандартный класс SysMailer, то есть через COM-объект 'CDO.Message'.
Кракозябры появились в письмах у пользователей, чьи почтовые ящики находятся на почтовом сервере с Exchange 2013. CDO.Message и Exchange 2013 - не совместимы ?
Если отправлять письма через System.Net.Mail.SmtpClient, то с символами проблем нет. В Ax2012 смотрю CDO.Message уже не используется.
__________________
Дмитрий
Alt 07.09.2015, 19:56   #16  
gl00mie ist offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.684 / 5813 (201) ++++++++++
Registriert seit: 28.11.2005
Ort: Москва
Blog-Einträge: 3
Не знаю на счет совместимости CDO.Message и MS Exchange 2013, не сталкивался, но в целом ничто не мешает переписать SysMailer на использование System.Net.Mail.SmtpClient, см. готовый пример здесь: Почту перевели на outlook.office365.com. SysMailer стал бесполезен?
Alt 07.09.2015, 22:09   #17  
Damn ist offline
Damn
Участник
 
436 / 154 (6) ++++++
Registriert seit: 28.05.2003
Ort: в глуши
Я думаю, что готовый пример можно взять и из Ax2012, там же есть класс SysMailerNET. Интересна была именно совместимость CDO.Message и Exchange 2013.
__________________
Дмитрий
Alt 09.09.2015, 09:28   #18  
Damn ist offline
Damn
Участник
 
436 / 154 (6) ++++++
Registriert seit: 28.05.2003
Ort: в глуши
Понял в чём проблема. Совместимость тут ни при чём.
Кракозябры возникали в письмах, рассылаемых классом EventNotificationBatch.
А в нём явного вызова mailer.bodyCharSet('UTF-8') нет, в отличии от классов SysEmailBatch и SysEmailDistributor. Даже в HotfixRollup 8.
Exchange 2010 это проглатывал, а Exchange 2013 уже нет.
__________________
Дмитрий
This post has been rated by: trud (2), gl00mie (3).
Stichworte
email, кодировка

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Проблема с выгрузкой отчетов Reporting Services в AX2009 oleg_e DAX: Администрирование 14 18.01.2012 19:08
Проблема с возвратом AX2009 RU 5.0.1500.4750.11 Shmel_83 DAX: Функционал 9 01.11.2011 15:27
Проблема после установки AX2009 RU7 Cheslav DAX: Администрирование 19 15.08.2011 09:29
Ax2009 AIF: Проблема с Custom Service Aif Marina Konevskih DAX: Программирование 3 07.06.2010 08:45
Проблема при импорте Форм из AX2009 в 4.0 rusalaudinov DAX: Программирование 5 14.03.2010 15:40

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 12:19 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.