Windows Task Scheduler работает приложение, но не может отправить электронную почту - PullRequest
1 голос
/ 12 октября 2011

В моем планировщике задач Windows я запланировал запуск ежедневного запуска консольного приложения c #. Это приложение отправляет некоторые данные в базу данных, а затем отправляет электронное письмо.

Когда я запускаю его нормально, он работает, но, тем не менее, когда он запускается через планировщик задач, он отправляет данные в базу данных, но не может отправить электронное письмо.

Есть идеи как это исправить?

РЕДАКТИРОВАТЬ:

Да, я могу правильно отправить через консольное приложение. Он использует сетевые учетные данные по умолчанию. Однако, когда я просматриваю журналы событий, у меня регистрируется следующее исключение .NET Runtime:

Версия Framework: v4.0.30319
Описание: процесс был прерван из-за необработанного исключения.
Информация об исключении: System.IO.IOException
Стек:
на iTextSharp.text.pdf.PdfPages.WritePageTree ()
на iTextSharp.text.pdf.PdfWriter.Close ()
на iTextSharp.text.pdf.PdfDocument.Close ()
на iTextSharp.text.Document.Close ()
в ReadReutersRates.Program.SavePDF (System.DateTime)
в ReadReutersRates.Program.Main (System.String [])


Я думаю, что это как-то связано с файлом PDF, который я прилагаю к письму. Но довольно странно, что это работает, когда я запускаю его вручную.

1 Ответ

0 голосов
/ 02 ноября 2015

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

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

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

...