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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.01.2011, 12:21   #1  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
на клиенте всё работает, теперь это надо заставить работать на сервер из batch...
Старый 27.01.2011, 12:30   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от timaluhs Посмотреть сообщение
на клиенте всё работает, теперь это надо заставить работать на сервер из batch...
Сильно подозреваю, что под batch-сервером подразумевается именно служба.
В режиме "старого" пакетника - такое можно было провернуть, создав static-метод на клиенте (static client) и вызвать его из метода run, который вызывает пакетник.
Тут... сильно подозреваю что может и не получиться (надо попробовать).
__________________
Возможно сделать все. Вопрос времени
Старый 27.01.2011, 13:04   #3  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
класс property Run on - Called from

public class mlm_SendEmailWithAttachment extends RunBaseBatch
{
}

у нас пару таких классов запускается на сервер по ночам Basic -> Inquires -> Bach job
это и называется старым пакетником?
Старый 27.01.2011, 14:00   #4  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Red face
Danm, просто гениально, об этом я не подумала. Почему-то считала что permition относятся к файлу, чтобы его можно было читать.
оказывается тут всё по другому. Респект и уважение.
Работает УРА. Всем огромное спасибо. Что бы я без форума делала????

выдаёт ещё какие-то ошибки, попробую разобраться. Но первое письмо доходит, а на втором почему- то опять требует
Request for the permission of type 'InteropPermission' failed.
в конце метода надо ещё какие-то танцы с бубном по поводу 'InteropPermission' или нет?

Последний раз редактировалось timaluhs; 27.01.2011 в 14:05. Причина: добавление
Старый 27.01.2011, 14:14   #5  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
SomeOne
просто весь интернет пестрит сообщениями что можно послать email без прикреплённого файла, а если с файлом то только код dot.net и все любезно предлагают образцы кода. Попробую посмотреть класс. Спасибо
Можно пример или ссылку msdn очень скуп.
server static void sendMail(
SysEmailSystemId _emailId,
LanguageId _language,
str _emailAddr,
Map _mappings = null,
FilenameOpen _attachmentfileName = '',
str _xmlData = '',
boolean _isTraceable = false,
userId _userId = '',
boolean _isWithRetries = false)

откуда берётся SysEmailSystemId _emailId? где сохраняется body, subject, to, from...
пока не очень понятно

Последний раз редактировалось timaluhs; 27.01.2011 в 14:37.
Старый 27.01.2011, 19:39   #6  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от timaluhs Посмотреть сообщение
SomeOne
просто весь интернет пестрит сообщениями что можно послать email без прикреплённого файла, а если с файлом то только код dot.net и все любезно предлагают образцы кода. Попробую посмотреть класс. Спасибо
Можно пример или ссылку msdn очень скуп.
server static void sendMail(
SysEmailSystemId _emailId,
LanguageId _language,
str _emailAddr,
Map _mappings = null,
FilenameOpen _attachmentfileName = '',
str _xmlData = '',
boolean _isTraceable = false,
userId _userId = '',
boolean _isWithRetries = false)

откуда берётся SysEmailSystemId _emailId? где сохраняется body, subject, to, from...
пока не очень понятно
Что то про это было написано тут http://axapta.mazzy.ru/lib/email/

Если кратко - то так:
1. Настраиваем параметры почтового сервера в форме – администрирование – настройки – параметры электронной почты

2. Создаем шаблон почтового сообщения в форме основное – настройка – шаблоны сообщений эл. Почты. Установить бокс «показать электронную почту системы»
При этом поле «код электронной почты» - и будет SysEmailSystemId. Если на закладке «Разное» в поле «Группа пакетов» указать код группы пакетов – сообщение будет отправляться сервером пакетной обработки, а не в режиме «онлайн».
Это удобно, например, когда рассылка осуществляется, например, при обновлении записи таблицы. Позволяет отделить процесс отправки сообщения в отдельный поток, и пользователю не придется ожидать окончание отправки сообщения, например при обновлении записи.

В нижнем гриде так же добавляем новую запись – там можно указывать шаблоны, каждый для отдельного языка. При нажатии кнопки «шаблон» - открывается окно редактора, где вводится шаблон самого сообщения.

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

“Уважаемый %User%, запрашиваемый вами файл с отчетом %ReportName% в прикрепленном файле”.

Кстати, так же шаблоном можно указать и тему сообщения, например '%subject%' в поле "тема"

3. Сам код отправки сообщения:
X++:
static server void mail_testServer(Args _args)
{
    map mappings;
    ;

            mappings = new map(Types::String, Types::String);

            mappings.insert("User",         "Василий Пупкин");
            mappings.insert("ReportName", "Отчет о движении денежных средств");
            mappings.insert("subject", "Тестовое сообщение");

            SysEmailSystemTable::sendMail('test', "ru", 'pupkin@mail.ru', mappings);
}
Если не использовать шаблоны сообщений - то все проще.
Вот код отправки сообщения через сервер пакетной обработки
X++:
static void Job25(Args _args)
{
    SysEmailBatch   SysEmailBatch;
    ;
    SysEmailBatch = new SysEmailBatch();
    SysEmailBatch.parmEmailAddr("im@mail.ru");
    SysEmailBatch.parmMessageBody("test");
    SysEmailBatch.addAttachmentfileName("C:\\boot.ini");
    SysEmailBatch.parmSenderAddr("ss@mail.ru");
    SysEmailBatch.sendToBatch("mail"); //имя пакетной группы, нужно создать такую е
}
Если нужна отправка онлайн - то последняя строка - SysEmailBatch.run();
За это сообщение автора поблагодарили: ice (2), mikki_messer (1).
Старый 30.01.2011, 10:45   #7  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
воспользовалась вторым вариантом без шаблонов.
Добавила в мой класс в метод run.
Почему-то не находит файл который надо прикреплять. Письмо приходит без него. При запуске нет никаких сообщений об ошибке.
И письмо попадает в спам корзину. Тоже не очень хорошо - не все её проверяют и обращают внимание что там прибавилось письмо.

если написать реальный адрес в поле от кого, то письмо попадает во входящие. Одной головной болью меньше
добавила проверку WInAPI::fileExists(_fileName), возвращает true , но прикреплять не хочет

Последний раз редактировалось timaluhs; 30.01.2011 в 11:12.
Теги
email batch, atachment

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptapedia: Batch processing Blog bot DAX Blogs 0 29.01.2009 17:05
axaptabuilder: How to setup Axapta batch server running as user defined windows service Blog bot DAX Blogs 0 12.04.2007 16:10
Как указать отправителя при передаче письма через Mapi wit DAX: Программирование 1 14.01.2005 17:08
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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