09.02.2011, 11:45 | #1 |
Участник
|
Нет русского языка в 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!
Цитата:
Статус "Завершено"
Начато 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 |
Участник
|
У меня было наоборот. Письма с АОСа приходили с вопросиками вместо русских букв. А вот пакетный сервер отсылал русскоязычные письма корректно.
Видимо зависит от каких-то языковых настроек пользователя, чей процесс вызывает отправку электронной почты в аксапте. Но справиться с проблемой в своём случае я так и не смог. В итоге после планового переноса АОСа на другой сервер он стал корректно отправлять почту сам собой.
__________________
Дмитрий |
|
09.02.2011, 13:20 | #3 |
Участник
|
Вообще то в своем посте я писал про аксапту 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 |
Axapta
|
|
|
09.02.2011, 13:49 | #5 |
Участник
|
Спасибо, сейчас попробую.
А какие классы, не подскажите?
__________________
Axapta 3.0 SP6 |
|
09.02.2011, 14:19 | #6 |
Участник
|
Цитата:
Читаю письма Аутглюком 2003.
__________________
Axapta 3.0 SP6 |
|
09.02.2011, 14:27 | #7 |
----------------
|
чтобы не было проблем с Outlook 2007 лучше использовать utf-8
|
|
09.02.2011, 14:37 | #8 |
Участник
|
В SysEmailBatch прописан именно UTF:
X++: mailer.bodyCharSet('UTF-8');
__________________
Ivanhoe as is.. |
|
09.02.2011, 14:47 | #9 |
Участник
|
Проверил в Outlook 2007, все нормально.
__________________
Axapta 3.0 SP6 |
|
09.02.2011, 14:48 | #10 |
Участник
|
Я переносил классы, но не "поверх" старых, а в новые, с префиксом
SysMailer --> new_SysMailer SysMailerAttachments --> new_SysMailerAttachments SysEmailBatch --> new_SysEmailBatch Там придется удалить все "InteropPermission" - они не используется в 3,0. Еще какие то особенности есть (по моему там что то парсерах HTML от NET использовалось, но это легко обходится без применения NET) Выкладываю проект, не уверен что он полностью скомпилируется у вас, но думаю поймете что не так если что... |
|
|
За это сообщение автора поблагодарили: kostass (1). |
09.02.2011, 14:57 | #11 |
Участник
|
Цитата:
Огромное спасибо!
__________________
Axapta 3.0 SP6 |
|
09.02.2011, 15:20 | #12 |
Участник
|
Что-то я в своей Аксапте не могу найти подобного.
Есть только в 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 |
Участник
|
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 |
Участник
|
Ivanhoe, не мучай человека у него Axapta 3.0
__________________
Дмитрий |
|
09.02.2011, 15:38 | #15 |
Участник
|
to Ivanhoe
Разные у нас Аксапты
__________________
Axapta 3.0 SP6 |
|
09.02.2011, 15:58 | #16 |
Участник
|
Сорри Переходите на AX 2009
__________________
Ivanhoe as is.. |
|
09.02.2011, 16:48 | #17 |
Участник
|
Переход будет оооочень тяжелый, слишком много самописного функционала.
__________________
Axapta 3.0 SP6 |
|
09.02.2011, 17:16 | #18 |
Участник
|
|
|
18.01.2012, 10:00 | #19 |
Участник
|
Цитата:
Сообщение от Damn
У меня было наоборот. Письма с АОСа приходили с вопросиками вместо русских букв. А вот пакетный сервер отсылал русскоязычные письма корректно.
Видимо зависит от каких-то языковых настроек пользователя, чей процесс вызывает отправку электронной почты в аксапте. Но справиться с проблемой в своём случае я так и не смог. В итоге после планового переноса АОСа на другой сервер он стал корректно отправлять почту сам собой. Никто не разобрался какие именно настройки на сервере нужно сделать? |
|
18.01.2012, 13:28 | #20 |
MS Dynamics AX 2012 R3
|
Наверно проще уж будет дождаться MS Dynamics AX 2012
Хотя по хорошему сначала лучше перейти на MS Dynamics AX 4
__________________
"Человек человеку волк, а зомби зомби зомби." (с) С Уважением, Алексей Кабанов |
|