R语言发送邮件丨blastula包使用教程

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 = "[email protected]", #邮箱账号
  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 = "[email protected]"
to = "[email protected]"

然后,调用以下命令,实现邮件的发送。

复制代码
# 渲染邮件内容并添加附件,可能有附件也可能没有附件
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多平台发布

相关推荐
wowocpp36 分钟前
spring boot Controller 和 RestController 的区别
java·spring boot·后端
后青春期的诗go41 分钟前
基于Rust语言的Rocket框架和Sqlx库开发WebAPI项目记录(二)
开发语言·后端·rust·rocket框架
freellf1 小时前
go语言学习进阶
后端·学习·golang
全栈派森3 小时前
云存储最佳实践
后端·python·程序人生·flask
CircleMouse3 小时前
基于 RedisTemplate 的分页缓存设计
java·开发语言·后端·spring·缓存
獨枭4 小时前
使用 163 邮箱实现 Spring Boot 邮箱验证码登录
java·spring boot·后端
维基框架4 小时前
Spring Boot 封装 MinIO 工具
java·spring boot·后端
秋野酱4 小时前
基于javaweb的SpringBoot酒店管理系统设计与实现(源码+文档+部署讲解)
java·spring boot·后端
☞无能盖世♛逞何英雄☜4 小时前
Flask框架搭建
后端·python·flask
进击的雷神5 小时前
Perl语言深度考查:从文本处理到正则表达式的全面掌握
开发语言·后端·scala