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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.10.2009, 15:26   #1  
PSerg is offline
PSerg
Участник
 
12 / 10 (1) +
Регистрация: 09.04.2007
Отправка письма при помощи SysEmailBatch. Проблема с прикреплением файла
Создаю письмо при помощи класса SysEmailBatch. Прикрепляю файл. Письмо приходит но без вложения. Посмотрел отладчиком. В методе run класса SysEmailBatch есть проверка WinApiServer::fileExists(attachmentfileName) и она не проходит. В методе fileExists есть код:

X++:
    handle = fileCreate.call(bname, #GENERIC_READ, 0, 0, #OPEN_EXISTING, #FILE_ATTRIBUTE_NORMAL, 0);
    if (handle == #INVALID_HANDLE_VALUE)
    {
        lastError = WinAPIServer::getLastError();
        switch (lastError)
        {
            case #FILE_NOT_EXIST:
                return false;
            // This error is generated for filenames pointing to a folder without trailing '\'. E.g. "c:\tmp"
            case #ACCESS_DENIED:
                if (!_acceptFolder)
                    return false;
                break;
            // This error is generated for filenames pointing to a folder with trailing '\'. E.g. "c:\tmp\"
            case #PATH_NOT_EXIST:
                return false;
        }
    }
Ну и каждый раз возникает ошибка #PATH_NOT_EXIST.
Путь указываю в таком виде "\\Mowaxdb3\AXPublic\TempAttachmentMail\1.xls". Путь беру из таблицы т.ч. проблем со слэшами не должно быть. Но пробовал и писать в коде "\\\\Mowaxdb3\\AXPublic\\TempAttachmentMail\\1.xls".
Мне кажется есть какая - то хитрость с написанием пути к файлу вложения. Коллеги может кто - то пользуется этим алгоритмом для отправки писем с вложениями и сталкивался с подобной проблемой.
Старый 21.10.2009, 15:55   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
что то не нашел я кода приведенного вами.
я отправлял письмо с вложением при помощи класса SysEmailBatch следующим образом:
X++:
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();
письмо отправляется без проблем, и с вложением.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 21.10.2009, 15:57   #3  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
в методе run() класса SysEmailBatch, кроме всего прочего, внизу есть код:
X++:
if (attachmentfileName)
    {
        if (attachmentData)
        {
            binData = new BinData();
            binData.setData(attachmentData);
            binData.saveFile(attachmentfileName);
        }
        mailer.attachments().add(attachmentfileName);
    }
как вы понимаете он и отвечает за прикрепление файла.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 21.10.2009, 15:59   #4  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
пока писал подумалось, а какая у Вас версия ахи?
у меня трешка. а то может в более поздних версиях уже все по другому
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 21.10.2009, 16:07   #5  
PSerg is offline
PSerg
Участник
 
12 / 10 (1) +
Регистрация: 09.04.2007
Возможно у нас разные версии. У меня 4.0
Вот мой код отправки письма

X++:
(SendEmailCollectionLetter.FilePath);
            SysEmailBatch.parmEmailAddr(CustEmail);
            SysEmailBatch.parmMessageBody(messageBody);
            sysEmailBatch.parmPriority(EmailPriority::Normal);
            SysEmailBatch.parmSubject(Tema);
            SysEmailBatch.parmSenderAddr(SysUserInfo.Email);
            SysEmailBatch.parmSendRetry(true);
            SysEmailBatch.parmTraceable(false);
            SysEmailBatch.run();
Напишите как вы формируете имя файла fileNameServ. Ну или пример пути к файлу вложению.
Старый 21.10.2009, 16:10   #6  
PSerg is offline
PSerg
Участник
 
12 / 10 (1) +
Регистрация: 09.04.2007
У меня этот кусок выглядит так:
X++:
            if (attachmentfileName)
            {
                //not in batch mode
                if (!attachmentData)
                {
                    fileIOPermission = new FileIOPermission(attachmentfileName,'r');
                    fileIOPermission.assert();
                    //BP Deviation Documented
                    if(WinApiServer::fileExists(attachmentfileName) &&
                    //BP Deviation Documented
                    (WinApiServer::fileSize(attachmentfileName) < (maxAttachmentSize * 1000000)) &&
                     SysEmailTable::isFromAttachmentsFolder(attachmentfileName))
                    {
                        binData = new BinData();
                        //BP Deviation Documented
                        binData.loadFile(attachmentfileName);
                        attachmentData = binData.getData();
                    }
                    CodeAccessPermission::revertAssert();
                }
Старый 21.10.2009, 16:15   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,323 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
на всякий случай - контрольный вопрос - отправка осуществляется на клиенте или на сервере?
Если на сервере - то есть ли права у той учетной записи, от имени которой запущена служба аоса на чтение указанной Вами папки?
__________________
Возможно сделать все. Вопрос времени
Старый 21.10.2009, 16:26   #8  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от PSerg Посмотреть сообщение
...

Напишите как вы формируете имя файла fileNameServ. Ну или пример пути к файлу вложению.
Файл лежит на общем ресурсе, перед отправкой письма этот файл копируется на клиентскую машину.
Путь выглядит след образом:
Цитата:
C:\DOCUME~1\...~1\LOCALS~1\Temp\01.xls
(вместо трех точек папка пользователя, под которым вошли в систему)
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 21.10.2009, 16:33   #9  
PSerg is offline
PSerg
Участник
 
12 / 10 (1) +
Регистрация: 09.04.2007
Отправка осуществляется на клиенте. Права на чтение каталога у учетной записи есть.
Старый 21.10.2009, 16:45   #10  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Я отправлял почту через SysEmailTable::sendMail(...), правда. Насколько я понимаю, это некая "фича" из оболасти security.

Суть в том, что к письму прикрепляются только файлы, которые лежат в каталоге, путь к которому указан в Администрировнаие\Настройки\Параметры электронной почты, хм... последнее поле... затрудняюсь даже предположить как это перевели на русский (Allow embedded data and attached files from).
__________________
С уважением,
glibs®
Старый 21.10.2009, 16:55   #11  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,323 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от glibs Посмотреть сообщение
затрудняюсь даже предположить как это перевели на русский (Allow embedded data and attached files from).
"Разрешить внедренные данные и вложенные файлы от"
__________________
Возможно сделать все. Вопрос времени
Старый 22.10.2009, 10:21   #12  
PSerg is offline
PSerg
Участник
 
12 / 10 (1) +
Регистрация: 09.04.2007
Колеги, всем спасибо за помощь. Кажется разобрался. Я создаю письмо при помощи класса SysEmailBatch, а в свойствах этого класса указано, что он создается на сервере. А файл я создаю на клиенте. Поэтому и возникает неувязка, что программа не может найти этот файл и соответственно прикрепить к письму.
Теги
sysemailbatch

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptapedia: SysEmailBatch Blog bot DAX Blogs 0 07.10.2008 18:05
Проблема загрузки файла longson DAX: Программирование 3 06.06.2007 12:06
Возникла проблема с получением имени файла при создании своего канала вывода отчетов. oleg_kap DAX: Программирование 3 06.06.2006 14:12
Dundas.Mailler - Кодировка subject-а письма npokypatop DAX: Программирование 3 18.05.2006 18:40
CRM: отправка файла как сообщение tanyusha DAX: Функционал 10 12.09.2003 21:13

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

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

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