R语言自动发送邮件
今天分享一个小技巧,用R语言脚本实现STMP邮件自动发送功能。
生信分析实际操作过程中,可能会偶尔会遇到耗时比较久的计算,比如基因组上游分析GATK标准流程往往耗时几天时间。
使用R语言自动发送邮件,在关键节点及时提醒计算状态,能尽可能的避免浪费时间和无效等待,再也不用加班看结果了,系统自动将运算得到的结果汇报至邮箱(文字、表格、图片等文件都支持)。
使用方法
首先,需要安装Rstudio(windows和linux版都支持),然后安装下面的R包,这步骤没有报错说明环境部署完成。
library(keyring)
library(blastula)
library(rmarkdown)
blastula包是Rstudio新出的发送邮件R包,不需要依赖java环境,相对用起来更方便,而且支持和Rmarkdown联动,实现精美的邮件界面优化。
设置STMP服务器
本次示例使用163邮箱(其他的qq邮箱、outlook等都可以,只要支持STMP即可),先登录邮箱后台。
点击设置,开启STMP,并生成一个随机授权码(一串乱七八糟的字符,复制保存下来)。
然后,进入Rstuio,运行以下代码:
# 创建许可证
create_smtp_creds_key(
id = "Bionote", # 账号id
user = "bionote@163.com", #邮箱账号
host = "smtp.163.com", # 这个是163的STMP服务器
port = 25, # 端口,如果其他服务器需要百度查一下对应端口
use_ssl = T # ssl加密
# overwrite = TRUE # 首次设置不用,修改时需要加上这个参数
)
系统会弹出一个输入密码的窗口,如果是首次使用,可能最开始会出现一个设置主密码(有点像锁屏密码),然后会出现下面的界面,需要输入STMP服务器密码,将之前那一长串乱七八糟的字符粘贴到此处即可。
创建邮件内容
需要创建一个data.Rmd
文件(Rmarkdown),然后根据这个文件生成email页面。
这个文件内的信息可以根据实际情况进行修改,支持各种变量自动替换。
如果需要邮件中添加附件,可以将文件放在当前目录下,图片或文字形式都可以。
发送邮件
通过以下代码生成基本的发送参数,包括收件人、主题、附件、正文。
subject = "【系统提示】差异表达矩阵计算完成" #邮件主题
attachment = "test.txt" # 如果有附件,在这里填写文件名
body = "data.Rmd" # 这个Rmd文件渲染后就是邮件的正文
# 定义用户(发件人邮箱)
from = "bionote@163.com"
to = "youraccount@qq.com"
然后,调用以下命令,实现邮件的发送。
# 渲染邮件内容并添加附件,可能有附件也可能没有附件
if (attachment == "") {
render_email(body) -> email
} else {
render_email(body) %>%
add_attachment(file = attachment) -> email
}
# 发送邮件
smtp_send(
from = from,
to = to,
subject = enc2utf8(subject), # 处理中文主题乱码问题
email = email,
credentials = creds_key(id = "Bionote") # 这个id需要和之前一致
)
此时,如果正常的话,手机上就会弹出一条通知。以上只是一个简单的示例,还有其他用法,比如通过表格循环群发给不同收件人、根据不同用户自动填充修改文件内容、根据任务运行状态更新邮件等等。
如果感兴趣的话欢迎分享、在看、点赞
本文由 mdnice 多平台发布