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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.02.2008, 16:57   #1  
zelibobis is offline
zelibobis
Участник
 
71 / 24 (1) +++
Регистрация: 15.10.2007
Адрес: Kiev
Проблема с отсылкой писем через Outlook
На сервере где находтся AOS и EP установлен клиент outlook.
Через портал идет отсылка писем используя класс smmOulookEmail.
Если портал был загружен с сервреа используя RDP, все корректно отрабатывает.

Если же на клентской машине, то
в методе createMailItem в строке:
outlook = new COM(#outlookApplication);
происходит зависание системы.

Из-за чего такое поведение? Как избежать подобного?

AX 4.0, MS SQL 2005
Старый 19.02.2008, 17:44   #2  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
А на клиентской машине установлен COM объект с указанным Вами ProgID? Поищите его вручную в реестре.
Старый 20.02.2008, 10:45   #3  
zelibobis is offline
zelibobis
Участник
 
71 / 24 (1) +++
Регистрация: 15.10.2007
Адрес: Kiev
установлен outlook.application.12
Старый 20.02.2008, 12:24   #4  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
тут надо бы проверить что
X++:
    #define.outlookapplication("outlook.application")
    outlook = new COM (#outlookapplication);
еще можно попробовать так
X++:
 dll         _mapiDLL = new DLL('mapi32.dll');
Старый 20.02.2008, 12:59   #5  
zelibobis is offline
zelibobis
Участник
 
71 / 24 (1) +++
Регистрация: 15.10.2007
Адрес: Kiev
X++:
#define.outlookapplication([COLOR=red]"outlook.application"[/COLOR])    outlook = [COLOR=blue]new[/COLOR] COM (#outlookapplication);
в данный момент принцип и код такой же.А вот как мне может помоч вот это?
Цитата:
dll _mapiDLL = new DLL('mapi32.dll');
Старый 20.02.2008, 13:17   #6  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Это еще один способ отправки почты, их на самом деле превеликое множество.
Старый 20.02.2008, 13:42   #7  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Вот через mapi32. Осталось на X++ переписать.
X++:
MapiMessage Message = { 0 } ;
Message.lpszSubject="bla-bla";
Message.lpszNoteText="bla-bla";
MapiRecipDesc From = { 0 } ;
From.lpszName="name";
From.lpszAddress="[EMAIL="name@name.ru"]name@name.ru[/EMAIL]";
Message.lpOriginator=&From;
MapiRecipDesc To[1] = { 0 };
To[0].ulRecipClass=1;
To[0].lpszName="name";
To[0].lpszAddress="[EMAIL="name@name.ru"]name@name.ru[/EMAIL]";
Message.nRecipCount=1;
Message.lpRecips=To;
Message.nFileCount=0;
Message.lpFiles=NULL;
typedef ULONG (FAR PASCAL *MAPISendMail) (LHANDLE lhSession,
                                   ULONG ulUIParam,
                                   lpMapiMessage lpMessage,
                                   FLAGS flFlags,
                                   ULONG ulReserved);
HMODULE h = LoadLibrary("Mapi32.dll");
if(h!=NULL)
{
    MAPISendMail fnSend = (MAPISendMail)GetProcAddress(h,"MAPISendMail");
    if(fnSend!=NULL)
    {
        int ret = fnSend(0, 
                   (ULONG)Form1->Handle, 
                   &Message, 
                   MAPI_LOGON_UI | MAPI_NEW_SESSION,  
                   0); 
        if(ret==SUCCESS_SUCCESS)
            Application->MessageBox("Message sends SUCCESSful", "Ok!", MB_OK);
        else
        {
            Application->MessageBox(DecodeErrorMessage(ret).c_str(), "Error", MB_OK);
        }
    }
    else 
        Application->MessageBox("Can't get DLL function", "Error!", MB_OK);
    FreeLibrary(h);
}
else 
    Application->MessageBox("Can't load DLL", "Error!", MB_OK);
Старый 20.02.2008, 14:20   #8  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
тут все предлагают что писать, а зачем писать не проще ли взять готовое.

смотрите следующие объекты: \Classes\SysEmailBatch данный класс использует класс \Classes\SysMailer для отправки писем, текст писем настраивается в форме \Forms\SysEmailTable
Старый 20.02.2008, 14:49   #9  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Цитата:
Сообщение от konopello Посмотреть сообщение
тут все предлагают что писать, а зачем писать не проще ли взять готовое.
Так никто и не настаивает, насколько я понял zelibobis надо реализовать именно внешний вариант.
Старый 20.02.2008, 15:31   #10  
zelibobis is offline
zelibobis
Участник
 
71 / 24 (1) +++
Регистрация: 15.10.2007
Адрес: Kiev
Господа, дело в том, что функционал отправки писем я реализовал. Для AX3 все работает на ура. Но вот при переносе на 4-кувозникли трудности, которые я описал в первому посте.
Мне необходимо разобраться, почему при попытки отправки почты с клиента - COM обьект не создается а происходит зависание на строчке кода отвечающей за его создание.
Старый 26.02.2008, 19:01   #11  
zelibobis is offline
zelibobis
Участник
 
71 / 24 (1) +++
Регистрация: 15.10.2007
Адрес: Kiev
На данный момент, проблема решена следущюим образом:
outlook установлен и на сервере и на клиенте. Устанавил программу Outlook Security. Произвел первый запуск отправки письма из кода на сервере - появилось окошко с запросом действия - разрешить всегда. После этого все работает на ура. Но остался один вопрос! А можно ли сделать так что-бы не устанавливать на клиенте outlook? Или это невозможно?
Старый 26.02.2008, 19:27   #12  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от zelibobis Посмотреть сообщение
А можно ли сделать так что-бы не устанавливать на клиенте outlook? Или это невозможно?
Насколько я понимаю, проблема в том, что код отсылки письма работает там, где открыт портал, т.е. либо на клиенте, либо на сервере. Используйте для отправки писем класс-обертку, который будет всегда вызываться на сервере, - тогда надобность в Outlook'е на клиенте отпадет.
Теги
ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с импортом из Excel через COM Romsrs DAX: Программирование 18 10.06.2008 10:34
Проблема доступа через COM Connector wit DAX: Функционал 0 10.07.2006 12:34
Проблема с запуском business connector'a через удал доступ yooshi DAX: Программирование 1 07.11.2005 08:56

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

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

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