|  19.02.2008, 16:57 | #1 | 
| Участник | Проблема с отсылкой писем через Outlook 
			
			На сервере где находтся AOS и EP установлен клиент outlook.  Через портал идет отсылка писем используя класс smmOulookEmail. Если портал был загружен с сервреа используя RDP, все корректно отрабатывает. Если же на клентской машине, то в методе createMailItem в строке: outlook = new COM(#outlookApplication); происходит зависание системы. Из-за чего такое поведение? Как избежать подобного? AX 4.0, MS SQL 2005 | 
|  | 
|  19.02.2008, 17:44 | #2 | 
| Участник | 
			
			А на клиентской машине установлен COM объект с указанным Вами ProgID? Поищите его вручную в реестре.
		 | 
|  | 
|  20.02.2008, 10:45 | #3 | 
| Участник | 
			
			установлен outlook.application.12
		 | 
|  | 
|  20.02.2008, 12:24 | #4 | 
| MCT | 
			
			тут надо бы проверить что  X++: #define.outlookapplication("outlook.application") outlook = new COM (#outlookapplication); X++: dll _mapiDLL = new DLL('mapi32.dll'); | 
|  | 
|  20.02.2008, 12:59 | #5 | 
| Участник | 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 | 
| MCT | 
			
			Это еще один способ отправки почты, их на самом деле превеликое множество.
		 | 
|  | 
|  20.02.2008, 13:42 | #7 | 
| Участник | 
			
			Вот через 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 | 
| SAP | 
			
			тут все предлагают что писать, а зачем писать не проще ли взять готовое.  смотрите следующие объекты: \Classes\SysEmailBatch данный класс использует класс \Classes\SysMailer для отправки писем, текст писем настраивается в форме \Forms\SysEmailTable | 
|  | 
|  20.02.2008, 14:49 | #9 | 
| MCT | |
|  | 
|  20.02.2008, 15:31 | #10 | 
| Участник | 
			
			Господа, дело в том, что функционал отправки писем я реализовал. Для AX3 все работает на ура. Но вот при переносе на 4-кувозникли трудности, которые я описал в первому  посте. Мне необходимо разобраться, почему при попытки отправки почты с клиента - COM обьект не создается а происходит зависание на строчке кода отвечающей за его создание. | 
|  | 
|  26.02.2008, 19:01 | #11 | 
| Участник | 
			
			На данный момент, проблема решена следущюим образом: outlook установлен и на сервере и на клиенте. Устанавил программу Outlook Security. Произвел первый запуск отправки письма из кода на сервере - появилось окошко с запросом действия - разрешить всегда. После этого все работает на ура. Но остался один вопрос! А можно ли сделать так что-бы не устанавливать на клиенте outlook? Или это невозможно? | 
|  | 
|  26.02.2008, 19:27 | #12 | 
| Участник | 
			
			Насколько я понимаю, проблема в том, что код отсылки письма работает там, где открыт портал, т.е. либо на клиенте, либо на сервере. Используйте для отправки писем класс-обертку, который будет всегда вызываться на сервере, - тогда надобность в Outlook'е на клиенте отпадет.
		 | 
|  | 
| Теги | 
| ax4.0 | 
|  | 
|  Похожие темы | ||||
| Тема | Ответов | |||
| Проблема с импортом из Excel через COM | 18 | |||
| Проблема доступа через COM Connector | 0 | |||
| Проблема с запуском business connector'a через удал доступ | 1 | |||
| 
 |