Планировщик заданий - MS Access не может отправлять электронную почту через MS Outlook

Недавно мы обновили наши системы до Office 2016. У меня есть запланированная задача, которая считывает информацию в базе данных MS Access, а затем отправляет эту информацию получателю почты через Outlook. Все было нормально до апгрейда.

Запланированная задача запускает файл .bat, который открывает MS Access, вызывает функцию, выполняет задачу, а затем отправляет информацию по электронной почте с помощью Outlook.

Когда я запускаю командный файл вручную, дважды щелкнув по нему, он работает как задумано и отправляет электронное письмо. Однако, когда я запускаю планировщик заданий, он не работает. Я точно знаю, что он открывает файл MS Access и может читать, но по какой-то причине не может отправить электронное письмо. Я снизил все настройки безопасности безрезультатно.

Запланированная задача выполняется с наивысшими привилегиями, и до обновления все было в порядке.

У кого-нибудь есть предложения.


person user3297770    schedule 06.05.2016    source источник
comment
Можете выложить скрипт файла .bat? Возможно, это проблема пути. Как работает .bat из командной строки в PowerShell? При прямом щелчке по файлу .bat используются относительные пути, а не абсолютные пути. Кроме того, ваши .exe или переменные среды могли изменить каталоги при обновлении.   -  person Parfait    schedule 06.05.2016
comment
'c: cd \ Program Files (x86) \ Microsoft Office \ Office16 msaccess.exe C: \ autojobs \ autojobs2.accdb / x AUTO_JOB_ACTIVEWITHNOACTIVEPRIME' ** Пакетный файл запускается отлично, когда я дважды щелкаю по нему. Однако, когда я запускаю планировщик задач, я знаю, что он выполняет необходимые задачи в Access, но не может отправлять электронную почту через Outlook. Все началось, когда мы обновились до Outlook 2016 на Win 7. Уррггг очень расстраивает! Кроме того, я сделал командный файл, который просто открывает Outlook. Опять же, вручную работает нормально, через диспетчер задач ничего не происходит.   -  person user3297770    schedule 06.05.2016
comment
ОК - когда я изменяю свойства в Планировщике задач Windows на «Запускать только при входе пользователя в систему», из «Выполнить» независимо от того, вошел ли пользователь в систему или нет. Работает отлично. Однако до обновления офиса этого не было. Я надеюсь, что есть политика или регистр, которые я могу изменить, чтобы исправить это. Любые идеи?   -  person user3297770    schedule 06.05.2016
comment
если Outlook не рекомендуется, вы можете использовать smtp через CDO stackoverflow.com/q/11579730/6269045, тогда Outlook не вовлеченный.   -  person BitAccesser    schedule 07.05.2016


Ответы (2)


В Outlook есть параметры безопасности, которые не позволяют приложению программно отправлять электронную почту через него. Он будет использовать всплывающее диалоговое окно, чтобы запросить разрешение на отправку электронной почты. Хотя я успешно избавился от всплывающего окна и заставил Access отправлять через Outlook, пока Outlook открыт (как вручную, так и в качестве запланированной задачи), он все равно не работает, когда Outlook еще не открыт.

Лучше всего, если у вас есть возможность, оставить Outlook открытым на компьютере, на котором выполняется запланированная задача. В противном случае вам придется попытаться выяснить, какая комбинация политик и настроек реестра / Outlook заставит Outlook работать так, как вы хотите.

Изменить: мой опыт связан с средой домена Windows / локального сервера обмена.

person SunKnight0    schedule 06.05.2016
comment
Благодарю за ваш ответ. Да, я попытался оставить Outlook открытым, снизить уровень безопасности и т. Д. Честно говоря, я считаю, что что-то есть в policy / reg, поскольку я смутно помню, как что-то менял, чтобы это работало, - person user3297770; 06.05.2016

Мы обновились до Office 2016 несколько недель назад и столкнулись с той же проблемой, что и вы. Наш командный файл запускает Access и запускает макрос, который экспортирует некоторые данные в текстовый файл и отлично работает при запуске вручную. Однако при запуске через планировщик заданий все казалось работало нормально, но текстовый файл никогда не обновлялся. После нескольких недель безуспешных попыток я наконец нашел причину проблемы и решение.

В нашем случае проблема заключалась в том, что Access 2016 нужно запускать как приложение переднего плана. Но при запуске в качестве приложения планировщика заданий (с установленной опцией «запускать независимо от того, вошел ли пользователь в систему или нет»), оно рассматривает себя как фоновое приложение и, следовательно, не запускается. См. Ответы Джима Деттмана здесь, чтобы узнать больше об этом: https://www.experts-exchange.com/questions/28988837/

Затем я нашел этот пост сотрудника Microsoft Блейка Моррисона, в котором он обсуждает изменения в последней версии планировщика заданий. Одно из его предложений по устранению неполадок сработало для нас:

Попробуйте создать новую задачу, но выберите для параметра «Настроить для:» значение «Windows Server 2003, Windows XP или Windows 2000» - это создаст модную задачу XP / 2003.

К сожалению, вам, вероятно, придется сделать это как новую задачу - существующие задачи, похоже, не позволяют вам выбрать эту опцию (она не отображалась в раскрывающемся меню для моей существующей задачи). Итак, мои настройки для новой задачи:

  1. Запуск от имени администратора
  2. «Запускать вне зависимости от того, авторизован пользователь или нет» - отмечено
  3. «Запускать с наивысшими привилегиями» - отмечено
  4. Настроить для: Windows Server 2003, Windows XP или Windows 2000

Если я запускаю задачу вручную, я вижу, что открывается командная строка, затем Access ненадолго открывается и исчезает (в конце нашего макроса есть команда Quit Access), а затем командная строка исчезает. Вывод в наш текстовый файл записывается так, как ожидалось. Если я запланирую его запуск, когда я выхожу из системы, очевидно, что я ничего не вижу, но текстовый файл снова записывается, как ожидалось, поэтому я знаю, что это сработало.

person Mike Willis    schedule 30.05.2018