如何用R发送简单易懂的邮件
这些天在通过预测模型跑出了不少天的数据,但是跑出来的数据如何汇报给领导呢,当然是通过邮件了,我这个人比较懒,当然不想自己每天都做这个事情了,不如写几段代码解决这个事情吧?好,就这样定下来了。
那么用R怎么解决这个难题?我赶紧搜索了一下,发觉有两个包可以帮助我解决这个问题,我选择了其中一个字符比较短的mailR包(人比较懒,下载包的时候可以少敲键盘),开始了研究。
根据网上的版本,我就直接把变量塞进去做了一个新版本:
library(mailR)
#body正文
body = "钱包预测"
#收件人
recipients <- c("[email protected]**.cc")
cc<- c([email protected]**.cc')#抄送自己是为了测试邮件格式是否正确
#发件人
sender = "[email protected]**.cc"
#主题
title = "资金端每日预测"
#填上邮箱密码code,如body是html,设置body=html参数,那么发出来的正文就是html格式的了
send.mail(
from = sender,
to = recipients,
cc = cc,
subject = title,
body = body,
encoding = "utf-8",
html = TRUE,
smtp = list(
host.name = "smtp.exmail.qq.com",
port = 465,
user.name = sender,
passwd = "******",
ssl = TRUE
),
authenticate = TRUE,
send = TRUE ,
attach.files = c("d:/Rdata/zjd/ts/钱包.xlsx")#添加附件
)
#body正文
body = "钱包预测"
#收件人
recipients <- c("[email protected]**.cc")
cc<- c([email protected]**.cc')#抄送自己是为了测试邮件格式是否正确
#发件人
sender = "[email protected]**.cc"
#主题
title = "资金端每日预测"
#填上邮箱密码code,如body是html,设置body=html参数,那么发出来的正文就是html格式的了
send.mail(
from = sender,
to = recipients,
cc = cc,
subject = title,
body = body,
encoding = "utf-8",
html = TRUE,
smtp = list(
host.name = "smtp.exmail.qq.com",
port = 465,
user.name = sender,
passwd = "******",
ssl = TRUE
),
authenticate = TRUE,
send = TRUE ,
attach.files = c("d:/Rdata/zjd/ts/钱包.xlsx")#添加附件
)
上面的邮箱以及密码需要自己填写正确,然后java编辑器要跟系统版本相同(即系统如果是32bit,jre必须也是32bit;系统如果是64bit,jre必须也是64bit),如我是64bit的windows10,下载的就是jre的windows 64位版本,要不然无法发送邮件。
后来由于正文空无一物,我感觉邮件除了附件太空旷,于是对正文body变量做了一下优化如下:
body = paste("钱包预测</p>",as.Date(end)+1,"当日钱包(含玖加)预测整体成交为",round(sum(as.numeric(c[,2]))/10000,2),"万,其中定期成交为",round(sum(as.numeric(c[1:11,2]))/10000,2),"万,活期成交为",round(sum(as.numeric(c[12,2]))/10000,2),"万</p>",
as.Date(end)+2,"当日钱包(含玖加)预测整体成交为",round(sum(as.numeric(c[,3]))/10000,2),"万,其中定期成交为",round(sum(as.numeric(c[1:11,3]))/10000,2),"万,活期成交为",round(sum(as.numeric(c[12,3]))/10000,2),"万</p>",
as.Date(end)+3,"当日钱包(含玖加)预测整体成交为",round(sum(as.numeric(c[,4]))/10000,2),"万,其中定期成交为",round(sum(as.numeric(c[1:11,4]))/10000,2),"万,活期成交为",round(sum(as.numeric(c[12,4]))/10000,2),"万</p>")
as.Date(end)+2,"当日钱包(含玖加)预测整体成交为",round(sum(as.numeric(c[,3]))/10000,2),"万,其中定期成交为",round(sum(as.numeric(c[1:11,3]))/10000,2),"万,活期成交为",round(sum(as.numeric(c[12,3]))/10000,2),"万</p>",
as.Date(end)+3,"当日钱包(含玖加)预测整体成交为",round(sum(as.numeric(c[,4]))/10000,2),"万,其中定期成交为",round(sum(as.numeric(c[1:11,4]))/10000,2),"万,活期成交为",round(sum(as.numeric(c[12,4]))/10000,2),"万</p>")
其中变量end和c都在之前的代码中涉及了,我这边是直接取模型变量,结果如图:
这样我们就直接把附件中的数据通过邮件正文概述出来了。