提出需求

每月(天)于hh时mm分之前,完成XXX报告,并通过[email protected]进行报送。

需求分析

  1. 生成报告可以利用R自动完成。尤其推荐使用R Markdown。
  2. 发送邮件可以利用mailR包自动完成。
  3. 定时执行以上任务可以考虑利用Windows的任务计划程序实现。

具体实现步骤如下:

新建R文件

新建一个.R文件,(文件名假定为mailR.R),文件里下如代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
library(mailR)

from = "[email protected]"  # 发件人邮箱
to = "[email protected]"  # 收件人地址
subject = "document"
attach.files = 'path to file'  # 附件路径
body = "XXXX XXXX XXXX XXXX"  # 邮件正文

send.mail(from,
          to,
          subject,
          body,
          encoding = "utf-8",
          html = FALSE,
          inline = FALSE,
          smtp = list(host.name = "smtp.qq.com",  # 此处以QQ邮箱为例
                      port = 465,  # QQ邮箱发送服务器端口
                      user.name = "[email protected]", 
                      passwd = "xxxxxxxxx",   # 邮箱授权码
                      ssl = TRUE),
          authenticate = TRUE,
          send = TRUE,
          debug = FALSE,
          attach.files)

新建bat文件

可以先新建一个纯文本文件,复制如下代码后另存为.bat文件,假定文件名为mail.bat

1
2
cd  X:\Program Files\R\R-x.x.x\bin  
Rscript  X:\xxx\xxx\mailR.R

需要注意的是:

  • R程序路径需要根据实际做相应的调整。
  • mailR.R文件的路径需要根据实际路径进行声明。
  • 其实mailR.R中的附件也可以通过命令行调用R生成,然后再执行mail.R。

创建任务计划

依次打开控制面板 -> 管理工具 -> 任务计划程序,

  1. 在常规里设置任务名称。
  2. 在触发器里设置计划,例如任务执行时间、频率等。
  3. 在操作里点击新建,在程序或脚本里添加mail.bat。