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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.06.2011, 09:26   #1  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Отправка писем через SysEmailBatch на внешние адреса
Здравствуйте!

Написал отправку писем в зависимости от смены статуса заказа. Вот код который отправляет:

X++:
static server void sendMail(Notes   _text,
                            Email   _toEmail,
                            Name    _fromName,
                            Email   _fromEmail,
                            str     _subject,
                            str     _attachment = '')
{
    EmailPriority   priority = EmailPriority::High;
    str             attachmentPath = '';
    SysEmailBatch   sysEmailBatch;
    ;

    if(!_toEmail)
        return;

    if (_attachment && WinAPI::fileExistsClient(_attachment))
        attachmentPath = _attachment;

    try
    {
        sysEmailBatch = SysEmailBatch::construct();
        sysEmailBatch.parmSendername(_fromName);
        sysEmailBatch.parmSenderAddr(_fromEmail);
        sysEmailBatch.parmEmailAddr(_toEmail);
        sysEmailBatch.parmMessageBody(_text);
        sysEmailBatch.parmPriority(priority);
        sysEmailBatch.parmSubject(_subject);
        sysEmailBatch.parmAttachmentfileName(attachmentPath);

        sysEmailBatch.run();
    }
    catch
    {
    }
}
Прописал в SysEmailParameters настройки почтового сервера (Exchange).

Все прекрасно работает для внутренней почты, а если попытаться отправить письмо на внешнюю почту - генерится исключение:

Метод 'SendMail' в COM-объекте класса 'Dundas.mailer' возвратил код ошибки 0x80004005 (E_FAIL), который означает: The RCPT command failed. The specified account does not exsist.

Поискал в интернете - нашел:
http://www.mail-archive.com/developm.../msg12537.html

We figured this out. On the Exchange server we had the IP addresses
of the AOS's in the SMTP Default Virtual Server properties (Relay
restrictions) but that does not work if you are emailing a report
because the ip address of the client is used. From our
understanding the AOS ip address is used when a batch job or if it
is running on the server side. So we entered in the range of our
Networks IP addresses and now it works great!

Передал админу - он не поймет как решить.

Не поможете разобраться?
Старый 06.06.2011, 09:37   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
когда то давно у меня тоже была похожая проблема, тоже не отправлялись письма во внешний мир (может и точно такая же, просто точно ошибку не помню).

сказал админу, он что то долго смотрел, потом сказал какой мне прокси сервер прописать в настройках и все стало замечательно отправляться

исходя из этого опыта, могу предположить, что дело в настройках прокси.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 06.06.2011, 09:41   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Скорее всего, на внешнем почтовом ящике включена аутентификация по SMTP.

К сожалению, через Dundas Mailer ее нельзя прикрутить
__________________
Axapta v.3.0 sp5 kr2
Старый 06.06.2011, 09:46   #4  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от lev Посмотреть сообщение
сказал админу, он что то долго смотрел, потом сказал какой мне прокси сервер прописать в настройках и все стало замечательно отправляться

исходя из этого опыта, могу предположить, что дело в настройках прокси.
Спасибо! А прокси в SysEmailParameters прописываются? (сервер исходящей почты)
Старый 06.06.2011, 09:47   #5  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от AndyD Посмотреть сообщение
Скорее всего, на внешнем почтовом ящике включена аутентификация по SMTP.

К сожалению, через Dundas Mailer ее нельзя прикрутить
Спасибо! А существуют альтернативные способы отправки почтовых сообщений из Аксапты, которые бы решали эту проблему?
Старый 06.06.2011, 09:59   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
MAPI. Но должена быть настроена клиентская почтовая программа (Outlook, Outlook Express, Live Mail)

PS. DAX 3.0, полагаю?
если 4.0 или 2009 - можно воспользоваться .net
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: DreamCreator (2).
Старый 06.06.2011, 10:00   #7  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
Спасибо! А прокси в SysEmailParameters прописываются? (сервер исходящей почты)
ага.
Администрирование \ Настройка \ Параметры почты.
Ну и там "Сервер исходящей почты", "Номер порта SMTP" и пр.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: DreamCreator (2).
Старый 06.06.2011, 10:29   #8  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от AndyD Посмотреть сообщение
MAPI. Но должена быть настроена клиентская почтовая программа (Outlook, Outlook Express, Live Mail)

PS. DAX 3.0, полагаю?
если 4.0 или 2009 - можно воспользоваться .net
Спасибо! DAX 3.0 да
Сейчас смотрю MAPI
Старый 06.06.2011, 10:33   #9  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Кстати, посмотрел что использую у себя.
Отправляю почту через класс SysEMailBatch (он в свою очередь использует класс SysMailer) . Пример:
X++:
SysEMailBatch       sysEMailBatch       = SysEMailBatch::construct();
str                 txtBody;
FileName            fileNameServ;
;

...
sysEMailBatch.parmEmailAddr(Email);
        sysEMailBatch.parmMessageBody(txtBody);
        sysEMailBatch.parmPriority(1);
        sysEMailBatch.parmSenderAddr(emplTable.Email);
        sysEMailBatch.parmSendername(emplTable.Name);
        sysEMailBatch.parmSubject(strFmt(" %1", emplTable.Name) + strFmt("'%1'", CompanyInfo::find().Name));
        sysEMailBatch.parmAttachmentfileName(fileNameServ);
        sysEMailBatch.run();
все нормально отправляется
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 06.06.2011, 10:41   #10  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от lev Посмотреть сообщение
Кстати, посмотрел что использую у себя.
Отправляю почту через класс SysEMailBatch (он в свою очередь использует класс
SysMailer) .все нормально отправляется
У меня фактически тот же код. Вот интересно что админ сделал чтобы заработало
Старый 06.06.2011, 10:43   #11  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
У меня фактически тот же код. Вот интересно что админ сделал чтобы заработало
Ага самое обидное что это было два года назад, и тот админ уже не работает спросить некого
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 06.06.2011, 11:04   #12  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
Спасибо! А существуют альтернативные способы отправки почтовых сообщений из Аксапты, которые бы решали эту проблему?
У Вас проблема в том, что админ не может посмотреть лог и разобраться почему не уходит почта на внешние адреса. Альтернативный способ отправки сообщений в данном случае - замена админа.
P.S. На SMTP могут быть разные требования к авторизации при отправке на локальные и внешние адреса, это нормальная практика. Начните с включения Use NTLM в Email parameters
__________________
-ТСЯ или -ТЬСЯ ?
Старый 06.06.2011, 11:32   #13  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от Vadik Посмотреть сообщение
У Вас проблема в том, что админ не может посмотреть лог и разобраться почему не уходит почта на внешние адреса. Альтернативный способ отправки сообщений в данном случае - замена админа.
Смотрят вроде

Цитата:
Сообщение от Vadik Посмотреть сообщение
P.S. На SMTP могут быть разные требования к авторизации при отправке на локальные и внешние адреса, это нормальная практика. Начните с включения Use NTLM в Email parameters
А где этот параметр меняется? В SysEmailParameters такого поля не нашел..
Старый 06.06.2011, 12:03   #14  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
А где этот параметр меняется? В SysEmailParameters такого поля не нашел..
\Data Dictionary\Tables\SysEmailParameters\Fields\NTLM
__________________
-ТСЯ или -ТЬСЯ ?
Старый 06.06.2011, 12:50   #15  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от Vadik Посмотреть сообщение
\Data Dictionary\Tables\SysEmailParameters\Fields\NTLM
В 3.0 значит нет

В итоге выделили проблему - почтовый сервер не проходит smtp авторизацию (отключен relay, если не ошибаюсь).

SysInetMail успешно отсылает, только на двух диалогах надо Да нажать:

X++:
  SysInetMail mail = new SysInetMail();
  ;
  mail.sendMail('external@yandex.ru', "test sysInetMail", "test", false);
C MAPI еще не разобрался.
Старый 06.06.2011, 12:53   #16  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
SysInetMail это и есть обертка над MAPI
__________________
Axapta v.3.0 sp5 kr2
Старый 22.10.2013, 13:26   #17  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Может, кому-то пригодится:
У меня AX2009 RU2 , код выше не работает. вместо parmAttachmentfileName нужно использовать addAttachmentfileName, иначе письмо придет без аттачмента. Это связано не с настройками сервера, а с тем, чточто в run() проверяется attachmentFileNameList, который заполяется только в методе addAttachmentfileName() и остается пустам , если использовать parmAttachmentfileName

Последний раз редактировалось IKA; 22.10.2013 в 13:28.
За это сообщение автора поблагодарили: vvk (1), plumbum (3).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Нет русского языка в e-mail отсылаемых через Batch kostass DAX: Программирование 19 18.01.2012 13:28
Отправка письма при помощи SysEmailBatch. Проблема с прикреплением файла PSerg DAX: Программирование 11 22.10.2009 10:21
SysMailer и отправка сообщений через Axapta chanchala DAX: Программирование 9 11.02.2009 13:27
Отправка почты через Outlook... lev DAX: Программирование 9 12.12.2008 13:27
Проблема с отсылкой писем через Outlook zelibobis DAX: Программирование 11 26.02.2008 19:27

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

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

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