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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.08.2003, 17:02   #1  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Axapta 3, отправка eMail по русски.
Как осуществить subj

Я уже везде в Sys классах прописал кодировку Windows-1251. Но при отправке все равно кракозябры.
Старый 27.08.2003, 17:47   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
чем ( каким классом ) почта отправляется?
PHP код:
    sysMailer mailer = new SysMailer();
    ;


    
mailer.SMTPRelayServers().add("smtpserver",25"smtpserver""account""password");

    
mailer.fromAddress("fromaddr");
    
mailer.fromName("fromname");
    
mailer.subject("test");
    
mailer.body("test тест");
    
mailer.tos().add("toaddr");
    
mailer.sendMail(); 
и все работает
Старый 27.08.2003, 17:52   #3  
wavetrain is offline
wavetrain
Участник
 
11 / 10 (1) +
Регистрация: 15.08.2003
Адрес: Москва
Если используете класс SysMailer, то у него есть функция для задания кодировки. Что-то типа

mailer = new SysMailer();
mailer.HTMLbodyCharSet("windows-1251");
Старый 27.08.2003, 18:40   #4  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Есть у меня у одного класса такой метод.

PHP код:
static void SendByMail(
    
str             _subject '',
    
str             _emailAddr,
    
str             _from '',
    
str             _body '',
    
FilenameOpen    _attachmentFilename '')
{
    
SysMailer                       mailer          = new SysMailer();
    
SysEmailParameters              parameters      SysEmailParameters::find();
    
container                       attachmentdata;
    
BinData                         binData;


    
mailer.fromAddress(_from);
    
mailer.fromName(_from);
    
mailer.subject(mailer.encodeHeader(_subject'Windows-1251'1));
    
mailer.body(_body);

    if (
parameters.DNSServerName)
    {
        
mailer.DNSServers().add(parameters.DNSServerName,
                                
parameters.DNSTCPIPRetryCount,
                                
parameters.DNSUDPRetryCount);
    }

    if (
parameters.SMTPRelayServerName)
    {
        
mailer.SMTPRelayServers().add(parameters.SMTPRelayServerName,
                                      
parameters.SMTPPortNumber,
                                      
parameters.SMTPServerIPAddress,
                                      
parameters.SMTPUserName,
                                      
parameters.SMTPPassword);
    }

    
mailer.tos().add(_emailAddr);

    if (
_attachmentFilename)
    {
        
binData = new BinData();
        
binData.loadFile(_attachmentFilename);
        
attachmentdata binData.getData();
        
mailer.attachments().add(_attachmentFilename);
    }

    
mailer.sendMail();

Так вот если Заголовок не конвертировать, он пребращается в бнопню.
А имя приаттаченого файла все равно бнопня, даже если его конвертишь.

Если посмотреть письмо, то там кодировка US...
Я же во всех Sys классах поправил методы CharSet на кодировку Windows-1251.

Таким образом, как отправить eMail по русски.

2 Vadik

У меня и текст письма такой:
РЕЯР ОПНБЕПЙЮ test
вместо:
тест проверка test
Старый 27.08.2003, 19:17   #5  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
2 Vadik
У меня и текст письма такой:
РЕЯР ОПНБЕПЙЮ test
вместо:
тест проверка test
Видимо, мне просто везет.. Я не пользуюсь ни bodyCharSet(), ни encodeHeader().. Вот только с аттачами не проверял еще. Какая версия Аксапты, ОС? У меня - AX3.0 SP1, Win2K Sp4 En
2 wavetrain
Цитата:
Если используете класс SysMailer, то у него есть функция для задания кодировки. Что-то типа
mailer = new SysMailer();
mailer.HTMLbodyCharSet("windows-1251");
Что-то не пойму, как это влияет на кодировку. Что бы ни передавал туда, даже откровенный мусор, результат один и тот же.
PHP код:
mailer.bodyCharSet("XXX");    
mailer.body("test тест"); 
, а все читается
Старый 28.08.2003, 10:37   #6  
wavetrain is offline
wavetrain
Участник
 
11 / 10 (1) +
Регистрация: 15.08.2003
Адрес: Москва
:)
Цитата:


Цитата:
Цитата:
--------------------------------------------------------------------------------
Если используете класс SysMailer, то у него есть функция для задания кодировки. Что-то типа
mailer = new SysMailer();
mailer.HTMLbodyCharSet("windows-1251");
--------------------------------------------------------------------------------


Что-то не пойму, как это влияет на кодировку. Что бы ни передавал туда, даже откровенный мусор, результат один и тот же.
Я когда-то полдня потратил на борьбу с этими кракозябрами. Когда написал в bodyCharSet именно "windows-1251", тогда заработало. Причем до этого спрашивал у народа, кто когда-либо посылал письма из Axapta, у них такой проблемы не было.

Наверное вам действительно везет, или мне не везло
Старый 28.08.2003, 10:51   #7  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
Цитата:
Изначально опубликовано Vadik

Что-то не пойму, как это влияет на кодировку. Что бы ни передавал туда, даже откровенный мусор, результат один и тот же.
Угу. Чтобы не передавали в HTMLbodyCharSet - в заголовке письма кодировка не указывается.
И как отобразится письмо, зависит от некривости почтового клиента.
Зато если если сделать так:

PHP код:
static void Job13(Args _args)
{
    
sysMailerCustomHeaders headers;
    
sysMailer mailer = new SysMailer();
    ;


    
mailer.SMTPRelayServers().add("smtphost",25);
    
mailer.fromAddress("fromaddress");
    
mailer.fromName("fromName");
    
mailer.subject("test");
    
mailer.body("test тест");
    
mailer.tos().add("recepientadress");
    
headers mailer.customHeaders();
    
headers.add("Content-Type""text/plain; charset=Windows-1251");
    
mailer.sendMail();

то все отлично.
Старый 28.08.2003, 11:24   #8  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
естественно, если письмо с прикрепленными файлами нужно не лениться
и честно передать charset и contenttype в метод add.
т.е.
PHP код:
  mailer.attachments().add(_attachmentFilename"myattachment""text/plain""BASE64""Windows-1251"); 
а вообще, рекомендую:
http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc1521.html
Старый 28.08.2003, 12:57   #9  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
2 Антон Солдатов

В очередной раз спасибо, но на этот раз не все удалось.

PHP код:
static void SendByMail(
    
str             _subject '',
    
str             _emailAddr,
    
str             _from '',
    
str             _body '',
    
FilenameOpen    _attachmentFilename '')
{
    
SysMailer                       mailer          = new SysMailer();
    
SysEmailParameters              parameters      SysEmailParameters::find();
    
sysMailerCustomHeaders          headers;
    
container                       attachmentdata;
    
BinData                         binData;


    
headers mailer.customHeaders();
    
headers.add('Content-Type''text/plain; charset=Windows-1251');

    
mailer.fromAddress(_from);
    
mailer.fromName(_from);
    
mailer.subject(_subject);
    
mailer.body(_body);

    if (
parameters.DNSServerName)
    {
        
mailer.DNSServers().add(parameters.DNSServerName,
                                
parameters.DNSTCPIPRetryCount,
                                
parameters.DNSUDPRetryCount);
    }

    if (
parameters.SMTPRelayServerName)
    {
        
mailer.SMTPRelayServers().add(parameters.SMTPRelayServerName,
                                      
parameters.SMTPPortNumber,
                                      
parameters.SMTPServerIPAddress,
                                      
parameters.SMTPUserName,
                                      
parameters.SMTPPassword);
    }

    
mailer.tos().add(_emailAddr);

    if (
_attachmentFilename)
    {
        
binData = new BinData();
        
binData.loadFile(_attachmentFilename);
        
attachmentdata binData.getData();
        
mailer.attachments().add(_attachmentFilename,_attachmentFilename,'text/plain','BASE64','Windows-1251');
    }

    
mailer.sendMail();

Но имя файла бНОПНЯ, т.е. не помогло :-(
Старый 28.08.2003, 13:22   #10  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
в случае письма с аттачментами
вот это:
PHP код:
headers mailer.customHeaders();
    
headers.add('Content-Type''text/plain; charset=Windows-1251'); 
- не правильно. т.к. аксапта свой контентайп подставит. и он должен быть "multipart и т.д....". а "text/plain; charset=Windows-1251" заголовок должен быть у тела письма. лучше все-таки спецификацию почитать, там все по полочкам разложено, а я только Вас запутаю. Вобщем, если будет свободное время - попробую сделать готовый пример. Пока некогда.
Старый 05.09.2003, 06:49   #11  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
уфф вроде освободился.
ну вот собственно один из работающих вариантов решения:
PHP код:
headers mailer.customHeaders();
headers.add('Content-Type''text/plain; charset=Windows-1251');
mailer.attachments().add("c:/tmp/проверка.txt",
                         
"русское название.txt",
                         
'text/plain; charset=Windows-1251','BASE64',
                         
'пофигу что писать'
                         
); 
правда, все равно задача до конца не решена, т.к. если не писать
PHP код:
headers mailer.customHeaders();
headers.add('Content-Type''text/plain; charset=Windows-1251'); 
то тело и тема письма, в некоторых почтовых клиентах будет отображаться некорректно. А если написать, то, в принципе, будет работать, но не будет соответствовать спецификации.
В заголовке письма будет два хидера:
Content-Type: text/plain; charset=Windows-1251
Content-Type: Multipart/Mixed;
boundary="Mark=_200395235584177ssQOgBoO"
и как поведет себя почтовая программа - зависит от ее реализации..

по спецификации, в случае сообщения из нескольких частей(html+text bodies, attachments, e.t.c.) первый из наших контенттайп-ов должен быть проставлен не у всего письма, а непосредственно у тела.

вывод: нужно самому написать свой mailer, который грамотно собирает письмо (рекоммендую в качестве хорошего примера пакет java.mail ),
либо попросить датчан, чтобы почитали на досуге rfc.
За это сообщение автора поблагодарили: Vadik (3).
Старый 05.09.2003, 11:03   #12  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Антон, спасибо за ответ.

Короче, с отправкой почты из Аксапты полная ВАТА.
Благодаря вам удалось отправить файл с русским именем и русским заголовком письма, но при этом в теле БНОПНЯ.

Все вместе ни как не удается.

Если везде указываю customHeaders, то письмо получается сплошным текстом, т.е. вложение в тексте.

Пока плюнул, т.к. мне достаточно отправлять файл.
А выход видимо в раздельной отправке файлов и сообщений.
За это сообщение автора поблагодарили: Vadik (3).
Теги
email, faq, законченный пример, программно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
SysMailer и отправка сообщений через Axapta chanchala DAX: Программирование 9 11.02.2009 13:27
Отправка сообщения на email DreamCreator DAX: Программирование 23 06.02.2006 11:25
how to receive pop3 email in Axapta ? Haroldas DAX: Программирование 8 01.11.2005 16:41
Axapta 3, отправка файлов по eMail (КАК ИСПРАВИТЬ) raz DAX: Программирование 1 01.10.2003 15:07
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

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