AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.02.2011, 11:45   #1  
kostass is offline
kostass
Участник
 
37 / 13 (1) ++
Регистрация: 27.08.2009
Адрес: Владимир
Нет русского языка в e-mail отсылаемых через Batch
Всем доброго времени суток!

В электронных письмах, отсылаемых пакетником вместо русских букв знаки вопроса.
Для примера использую джобик Посылка письма с прикреплённым файлом через batch на серверe

X++:
static void sendMail(Args _args)
{
    SysEmailBatch   SysEmailBatch;
    ;


    SysEmailBatch   SysEmailBatch;
    ;
    SysEmailBatch = new SysEmailBatch();
    SysEmailBatch.parmEmailAddr("im@mail.ru");
    SysEmailBatch.parmMessageBody("Жизнь прекрасна! The Life beautiful!");
    //SysEmailBatch.addAttachmentfileName("C:\\boot.ini");
    SysEmailBatch.parmSenderAddr("ss@mail.ru");
    SysEmailBatch.sendToBatch("mail"); //имя пакетной группы, нужно создать такую е
 }
Приходит письмо с текстом:
Цитата:
????? ?????????! The Life beautiful!
В то же время, когда создаешь пакетные задания и ставишь галку Ответ E-mail, приходит нормальное сообщение:
Цитата:
Статус "Завершено"
Начато 08.02.2011 в 15:17:53.
Закончено 08.02.2011 в 15:17:53.
Нет сообщений в окне Infolog.

Статус нового задания "Ожидание".
Начало задания 13.02.2011 в 08:30:00.
Кто-то сталкивался с подобным? Куда копать?
__________________
Axapta 3.0 SP6
Старый 09.02.2011, 12:33   #2  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
У меня было наоборот. Письма с АОСа приходили с вопросиками вместо русских букв. А вот пакетный сервер отсылал русскоязычные письма корректно.
Видимо зависит от каких-то языковых настроек пользователя, чей процесс вызывает отправку электронной почты в аксапте. Но справиться с проблемой в своём случае я так и не смог. В итоге после планового переноса АОСа на другой сервер он стал корректно отправлять почту сам собой.
__________________
Дмитрий
Старый 09.02.2011, 13:20   #3  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Вообще то в своем посте я писал про аксапту 2009.

С Аксаптой 3.0 все несколько сложнее. Компонент COM Dundas.Mailer который там используется - достаточно глючной.

Для отправи нормальных "русских" сообщений требует небольшого тюнинга.


В методе run класса SysEmailBatch нужно дописать такие строки:

X++:
#define.charSet("Windows-1251")

if (this.parmSubject())
{
    mailer.subject(mailer.encodeHeader(this.parmSubject(), #charSet));
}

mailer.HTMLBodyCharSet(#charSet);
Это должно помочь.

Но тем не менее, это не позволит добиться качественного просмотра письма во всех почтовых клиентах (которые эту почту будут просматривать).

Будут ошибки с кодировкой в некоторых случаях (их не много по моим оценкам), но решить проблемы полностью в dundas.Mailer-е мне не удалось.

Кстати, в Ax2009 от Dundas.Mailer отказались, там используется для отправления почты родной для MS компонент COM cdo.message, с ним никаких ошибок не замечено.
Все работает корректно, с кодировкой проблем нет.

Кстати он легко переносится с ax2009 в ax 3.0. Делал такое, пару классов придется портировать...
За это сообщение автора поблагодарили: Logger (3), Ace of Database (3).
Старый 09.02.2011, 13:31   #4  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
Сообщение от someOne Посмотреть сообщение
Кстати, в Ax2009 от Dundas.Mailer отказались, там используется для отправления почты родной для MS компонент COM cdo.message
В Ax 4.0 тоже используется cdo.message.
Старый 09.02.2011, 13:49   #5  
kostass is offline
kostass
Участник
 
37 / 13 (1) ++
Регистрация: 27.08.2009
Адрес: Владимир
Цитата:
Сообщение от someOne Посмотреть сообщение
В методе run класса SysEmailBatch нужно дописать такие строки
Спасибо, сейчас попробую.

Цитата:
Сообщение от someOne Посмотреть сообщение
Кстати он легко переносится с ax2009 в ax 3.0. Делал такое, пару классов придется портировать...
А какие классы, не подскажите?
__________________
Axapta 3.0 SP6
Старый 09.02.2011, 14:19   #6  
kostass is offline
kostass
Участник
 
37 / 13 (1) ++
Регистрация: 27.08.2009
Адрес: Владимир
Цитата:
Сообщение от someOne Посмотреть сообщение
В методе run класса SysEmailBatch нужно дописать такие строки:

X++:
#define.charSet("Windows-1251")

if (this.parmSubject())
{
    mailer.subject(mailer.encodeHeader(this.parmSubject(), #charSet));
}

mailer.HTMLBodyCharSet(#charSet);
Это должно помочь.
Действительно помогло!
Читаю письма Аутглюком 2003.
__________________
Axapta 3.0 SP6
Старый 09.02.2011, 14:27   #7  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
чтобы не было проблем с Outlook 2007 лучше использовать utf-8
Старый 09.02.2011, 14:37   #8  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
В SysEmailBatch прописан именно UTF:
X++:
  mailer.bodyCharSet('UTF-8');
__________________
Ivanhoe as is..
Старый 09.02.2011, 14:47   #9  
kostass is offline
kostass
Участник
 
37 / 13 (1) ++
Регистрация: 27.08.2009
Адрес: Владимир
Цитата:
Сообщение от Wamr Посмотреть сообщение
чтобы не было проблем с Outlook 2007 лучше использовать utf-8
Проверил в Outlook 2007, все нормально.
__________________
Axapta 3.0 SP6
Старый 09.02.2011, 14:48   #10  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от kostass Посмотреть сообщение
Спасибо, сейчас попробую.


А какие классы, не подскажите?
Я переносил классы, но не "поверх" старых, а в новые, с префиксом
SysMailer --> new_SysMailer
SysMailerAttachments --> new_SysMailerAttachments
SysEmailBatch --> new_SysEmailBatch

Там придется удалить все "InteropPermission" - они не используется в 3,0.
Еще какие то особенности есть (по моему там что то парсерах HTML от NET использовалось, но это легко обходится без применения NET)

Выкладываю проект, не уверен что он полностью скомпилируется у вас, но думаю поймете что не так если что...
Вложения
Тип файла: xpo cdoMail.xpo (45.6 Кб, 510 просмотров)
За это сообщение автора поблагодарили: kostass (1).
Старый 09.02.2011, 14:57   #11  
kostass is offline
kostass
Участник
 
37 / 13 (1) ++
Регистрация: 27.08.2009
Адрес: Владимир
Цитата:
Сообщение от someOne Посмотреть сообщение
Выкладываю проект, не уверен что он полностью скомпилируется у вас, но думаю поймете что не так если что...
Думаю, что разберемся.

Огромное спасибо!
__________________
Axapta 3.0 SP6
Старый 09.02.2011, 15:20   #12  
kostass is offline
kostass
Участник
 
37 / 13 (1) ++
Регистрация: 27.08.2009
Адрес: Владимир
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
В SysEmailBatch прописан именно UTF:
X++:
  mailer.bodyCharSet('UTF-8');
Что-то я в своей Аксапте не могу найти подобного.
Есть только в SysMailer
X++:
public str bodyCharSet(str arg='')
{
    if (!prmIsDefault(arg))
        _com.BodyCharSet(arg);
    return _com.BodyCharSet();
}

public str HTMLBodyCharSet(str arg='')
{
    if (!prmIsDefault(arg))
        _com.HTMLBodyCharSet(arg);
    return _com.HTMLBodyCharSet();
}
__________________
Axapta 3.0 SP6
Старый 09.02.2011, 15:30   #13  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от kostass Посмотреть сообщение
Что-то я в своей Аксапте не могу найти подобного.
SysEmailBatch.run() строка 62:
X++:
//BP Deviation Documented
    fileIOPermission = new FileIOPermission('','r');
    fileIOPermission.assert();

    //BP Deviation Documented
    tmpPath = WinAPIServer::getTempPath();

    CodeAccessPermission::revertAssert();

    mailer.bodyCharSet('UTF-8');

    if (isTraceAble)
        {
            ttsbegin;
__________________
Ivanhoe as is..
Старый 09.02.2011, 15:34   #14  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Ivanhoe, не мучай человека у него Axapta 3.0
__________________
Дмитрий
Старый 09.02.2011, 15:38   #15  
kostass is offline
kostass
Участник
 
37 / 13 (1) ++
Регистрация: 27.08.2009
Адрес: Владимир
to Ivanhoe
Разные у нас Аксапты
__________________
Axapta 3.0 SP6
Старый 09.02.2011, 15:58   #16  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Сорри Переходите на AX 2009
__________________
Ivanhoe as is..
Старый 09.02.2011, 16:48   #17  
kostass is offline
kostass
Участник
 
37 / 13 (1) ++
Регистрация: 27.08.2009
Адрес: Владимир
Переход будет оооочень тяжелый, слишком много самописного функционала.
__________________
Axapta 3.0 SP6
Старый 09.02.2011, 17:16   #18  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от kostass Посмотреть сообщение
Переход будет оооочень тяжелый, слишком много самописного функционала.
Покажите тех у кого его мало.
Старый 18.01.2012, 10:00   #19  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
Цитата:
Сообщение от Damn Посмотреть сообщение
У меня было наоборот. Письма с АОСа приходили с вопросиками вместо русских букв. А вот пакетный сервер отсылал русскоязычные письма корректно.
Видимо зависит от каких-то языковых настроек пользователя, чей процесс вызывает отправку электронной почты в аксапте. Но справиться с проблемой в своём случае я так и не смог. В итоге после планового переноса АОСа на другой сервер он стал корректно отправлять почту сам собой.
Такая же проблема сейчас, только наоборот планово перешли на новый сервер AOS. и теперь с него приходят сообщения с "?????". Админы не могут понять в чем дело))
Никто не разобрался какие именно настройки на сервере нужно сделать?
Старый 18.01.2012, 13:28   #20  
ZornFire is offline
ZornFire
MS Dynamics AX 2012 R3
Аватар для ZornFire
Oracle
Злыдни
Ex AND Project
 
333 / 76 (3) ++++
Регистрация: 12.01.2009
Адрес: Москва
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Сорри Переходите на AX 2009
Наверно проще уж будет дождаться MS Dynamics AX 2012
Хотя по хорошему сначала лучше перейти на MS Dynamics AX 4
__________________
"Человек человеку волк, а зомби зомби зомби." (с)
С Уважением, Алексей Кабанов
Теги
batch, mail, sendemailrequest

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptapedia: Batch processing Blog bot DAX Blogs 0 29.01.2009 17:05
Fred Shen: New server-based batch framework in AX2009 Blog bot DAX Blogs 0 04.09.2008 07:06
Axapta 3.0 и поддержка русского языка. 4you DAX: Функционал 3 28.07.2006 17:15
Axapta 3.0 SP4 - нет русского языка Grimly DAX: Администрирование 3 06.12.2005 12:53
Нет доступного лицензионного кода для языка Ice_Alex DAX: Прочие вопросы 3 28.03.2005 12:06

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:10.