用R发带附件的邮件

    技术2022-07-10  108

    前一阵第一次接触到用自动用R发带附件的邮件,因此记录一下这个流程,以下的用法很适合用于发日报周报等定期需要发送的数据类邮件。

    目前的用法如下:

    准备好一个excel的数据模板(包括列名,数据说明页等)在R中处理好数据,向模板中插入数据在R中写好发邮件的脚本在azkaban上程序定时执行脚本(也可以用R的定时包)

    具体代码如下:

    # 这是步骤1,2,向模板中插入数据 ## load file contents file <- "data_template.xlsx" wb <- loadWorkbook(file) sheets <- getSheets(wb) ## Set sheets(假设有多个sheet) weekly_summary <- sheets[[1]] Daily_Summary <- sheets[[2]] Detailed_Data <- sheets[[3]] ## 加入数据(假设有多个sheet) addDataFrame(weekly, weekly_summary, col.names = FALSE, row.names = FALSE, startRow = 2) addDataFrame(daily, Daily_Summary, col.names = FALSE, row.names = FALSE, startRow = 2) addDataFrame(df, Detailed_Data, col.names = FALSE, row.names = FALSE, startRow = 2) file_name = paste0("your_file_name".xlsx") ## save to disk saveWorkbook(wb, file_name) # 这是步骤3,用R发邮件 library(mailR) ## 这里一定要写上自己的邮箱,不然在邮箱app里是看不到自己发的邮件的,写在cc或者recipient都行 recipient = c("email address1","email address2"...) cc = c("email address1","email address2"...) body = "邮件的文字内容" send.mail(from = "你的邮箱", to = recipient, cc = cc, subject = "你的标题", body = body, smtp = list(host.name = 你的邮箱host, port = 你的port, user.name = 你登录邮箱的user name, passwd = 你的密码, ssl = FALSE), authenticate = TRUE, send = TRUE, attach.files = file_name, ##附件的文件 debug = TRUE)

    接下来的步骤4可以通过azkaban或者用R的定时任务包自动设定好时间发送就行了。

    Processed: 0.033, SQL: 9