У меня есть код 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)
Есть идеи, в чем может быть проблема?
Это апдейт: проблему выяснил. В параметрах безопасности планировщика задач ранее я отмечал «Запускать независимо от того, вошел ли пользователь в систему или нет». Я снял этот флажок и поставил отметку «Запускать, только когда пользователь вошел в систему» - это помогло, и электронные письма проходят.
sendmailR
правильно загружена, когда сценарий выполняется как планировщик заданий? У меня были аналогичные проблемы, но в Linux, и дело было в том, что я установил пакет в свою личную папку, и когда планировщик запускал его, у него не было пути к моей личной папке, чтобы найти пакет. Так что, возможно, распечатайте результат .libPaths () как обычный пользователь и как планировщик Windows и сравните. - person bartoszukm   schedule 28.01.2016