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

相关推荐
小蒜学长4 分钟前
编程语言在线学习平台的设计与实现(代码+数据库+LW)
java·spring boot·后端·编程语言在线学习平台·在线编码
zhoujungis1 小时前
登录态 1 小时就掉?Django + Vue 双 Token 认证实战 | 尘世栈帧
后端
武子康2 小时前
同一台 ESP32,GSM 能消回声,VoIP 为什么不行?
人工智能·后端·agent
用户69371750013842 小时前
AI 能写代码,但工程架构还是应该由人来定
前端·后端
lqbzlll2 小时前
Spring Boot 开启虚拟线程后接口反而变慢了?4 个排查方向和对应修法
java·spring boot·后端
回家路上绕了弯2 小时前
让 AI 成为团队的共同能力
后端
70后写java的老码农2 小时前
一个 starter 通吃 9 家主流大模型:Spring Boot 3.x + Spring AI 1.x 极简落地
后端
武子康3 小时前
MultiNet 只听到一次命令,为什么连续触发?
人工智能·后端·agent
挖掘狂人3 小时前
同一个端口能不能被两个程序同时监听?
java·后端·程序员
codigger3 小时前
同一个端口能不能被两个程序同时监听?
java·后端·程序员·编程