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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.10.2021, 22:23   #1  
DesparioN is offline
DesparioN
Участник
 
84 / 15 (1) ++
Регистрация: 21.10.2014
DAX2012 Отправка писем с прикреплениями
Добрый вечер!

Был реализован функционал для формирования отчета в пакетном режиме (COM('Excel.Application'))
При попытке отправки письма с прикреплением построенного отчета возникает ошибка: Метод "addAttachment" в COM-объекте класса "CDO.Message" возвратил код ошибки 0x80070020 (<неизвестно>), который означает: Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.

При этом тот же самый код на клиенте отрабатывает без проблем.

Для отправки использую SysMailer. Ошибка возникает в методе sendMail.

З.ы. не знаю причуды ли это CIL или в этом кроется суть проблемы, но первый раз письмо отправилось без ошибок.

Подскажите, что может быть не так?
Старый 15.10.2021, 23:21   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,867 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Excel не сразу отпускает объект.
Если используете работу с Excel через .Net то после закрытия файла и обнуления переменных по работе с Excel попробуйте принудительно вызвать сборку мусора (примеры на форуме были) или покопать в сторону разных dispose методов.
Старый 15.10.2021, 23:29   #3  
DesparioN is offline
DesparioN
Участник
 
84 / 15 (1) ++
Регистрация: 21.10.2014
У меня были предположения, что проблема во времени закрытия. Просто не понятно почему тогда от клиента все работает (сервер дольше взаимодействует с Excel?), а также если вместо отправки письма вызвать удаление файла, то никаких ошибок не возникает.
Старый 16.10.2021, 00:06   #4  
DesparioN is offline
DesparioN
Участник
 
84 / 15 (1) ++
Регистрация: 21.10.2014
Благодарю за наводку.
В итоге конструкция:

new InteropPermission(InteropKind::ClrInterop).assert();
...
CodeAccessPermission::revertAssert();
System.GC::Collect();
System.GC::WaitForPendingFinalizers();

помогла.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обработка из DAX2009 писем в разных почтовых серверах по каким-то общим технологиям Raven Melancholic DAX: Программирование 20 23.06.2018 18:10
DAX2012 - перепоставки по закупкам Starling DAX: Функционал 2 18.03.2014 13:56
Отправка писем через SysEmailBatch на внешние адреса DreamCreator DAX: Программирование 16 22.10.2013 13:26
Отправка писем пользователям Рабочей группы Vadimych DAX: Функционал 2 06.08.2013 07:23
отправка писем с помощью SysMailer Lucky13 DAX: Программирование 1 09.03.2007 12:04
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:45.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.