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 = "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多平台发布

相关推荐
IT_陈寒1 小时前
闭包陷阱让我加了两天班,JavaScript你真行
前端·人工智能·后端
易协同低代码2 小时前
通达OA核心类库TD类深度解析
后端
Gopher_HBo2 小时前
Go语言学习笔记(十八)Gin处理Session
后端
谭光志3 小时前
工具塞满上下文窗口怎么办?深度拆解 AI Agent Tool Search 按需加载实现原理
前端·后端·ai编程
她说..3 小时前
Java 默认值设置方式
java·开发语言·后端·springboot
foggyprojects3 小时前
从0开始,一句话启动AI DataAgent
后端·数据分析·ai编程
郡杰3 小时前
一些基础和问题解决
后端
陈随易3 小时前
前端项目部署只要30秒
前端·后端·程序员
YIAN3 小时前
从零手写文件读取 MCP 服务:一文吃透 Model Context Protocol 全链路通信原理
前端·后端·mcp
Imchendiana3 小时前
《狂人日记NO.9》— 前后端一把梭,我的全栈实录
前端·后端