1

我有一个 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 = "person1@abc.com")

这是电子邮件的代码部分(使用 sendmailR)

library(sendmailR)  

from <- "person1@abc.com"
to <- c("person2@abc.com","person3@abc.com")
subject <- "Email Subject"
body <- "Email body."                     
mailControl = list(smtpServer = "tucson.websitewelcome.com")

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

知道可能是什么问题吗?

这是一个更新:找出问题所在。在任务调度程序的安全选项中,我之前检查过“无论用户是否登录都运行”。我取消选中它并选中“仅在用户登录时运行” - 这成功了,电子邮件正在通过。

4

1 回答 1

0

当您尝试通过任务计划程序发送电子邮件时,由于某种原因(不知道为什么),它只是跳过了该电子邮件部分。这是诀窍,尝试使用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")

在此处输入图像描述

于 2019-11-14T16:42:23.103 回答