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

У меня есть код R, который после выполнения нескольких шагов в конце отправляет электронное письмо. Когда я запускаю это в RStudio, весь код работает нормально и отправляет электронное письмо. Однако, когда я запускаю это через Планировщик задач Windows, код по-прежнему работает нормально (и выполняет то, что задумано), но не отправляет электронное письмо. Я пробовал как RDCOMClient, так и sendmailR, и проблема не устранена.

Вот как планируется задача.

Программа / сценарий: "C: \ Program Files \ R \ R-3.1.3 \ bin \ x64 \ Rscript.exe" Добавить аргументы: datavalv3.R Начать в: C: \ BLP \ Projects \ Project_07

Вот часть кода с электронной почтой (с RDCOMClient)

library(RDCOMClient)

path_name <- file.path(mainDir, subDir)
subject <- paste0("Data quality checks completed for ", analysis_date)
body <- paste0("Data summary has been compiled for all the farms for ",    analysis_date,". All the data summaries are saved in the folder <", path_name, ">.")

email_fn <- function(recipient) {

  OutApp <- COMCreate("Outlook.Application")
  outMail = OutApp$CreateItem(0)
  outMail[["To"]] = recipient
  outMail[["subject"]] = subject
  outMail[["body"]] = body
  outMail$Send()  

}

email_fn(recipient = "[email protected]")

Вот часть кода с электронной почтой (с sendmailR)

library(sendmailR)  

from <- "[email protected]"
to <- c("[email protected]","[email protected]")
subject <- "Email Subject"
body <- "Email body."                     
mailControl = list(smtpServer = "tucson.websitewelcome.com")

sendmail(from = from, to = to, subject = subject, msg = body, control = mailControl)

Есть идеи, в чем может быть проблема?

Это апдейт: проблему выяснил. В параметрах безопасности планировщика задач ранее я отмечал «Запускать независимо от того, вошел ли пользователь в систему или нет». Я снял этот флажок и поставил отметку «Запускать, только когда пользователь вошел в систему» ​​- это помогло, и электронные письма проходят.


person Ankur    schedule 28.01.2016    source источник
comment
Вы уверены, что библиотека sendmailR правильно загружена, когда сценарий выполняется как планировщик заданий? У меня были аналогичные проблемы, но в Linux, и дело было в том, что я установил пакет в свою личную папку, и когда планировщик запускал его, у него не было пути к моей личной папке, чтобы найти пакет. Так что, возможно, распечатайте результат .libPaths () как обычный пользователь и как планировщик Windows и сравните.   -  person bartoszukm    schedule 28.01.2016
comment
Спасибо @bartoszukm. В коде используются 3 библиотеки (RODBC, data.table и sendmailR), и все они находятся по одному пути (в папке моего пользователя). Если RODBC и data.table загружаются правильно, может ли sendmailR по-прежнему не загружаться?   -  person Ankur    schedule 28.01.2016
comment
Вы когда-нибудь решали этот вопрос Анкур?   -  person BSHuniversity    schedule 11.10.2019
comment
Есть аналогичная проблема. И в моем случае мне нужно отметить галочкой «Запускать независимо от того, вошел ли пользователь в систему или нет». Удалось ли найти первопричину?   -  person Praneeth Munuganti    schedule 07.11.2019


Ответы (1)


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

install.packages('data.table')
install.packages('knitr')
install.packages('miniUI')
install.packages('shiny')
install.packages("taskscheduleR", repos = "http://www.datatailor.be/rcube", type = "source")

введите описание изображения здесь

person Sumit Singh    schedule 14.11.2019