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

相关推荐
武子康12 分钟前
大数据-128 - Flink 并行度详解:从概念到最佳实践,一文读懂任务并行执行机制 代码示例与性能优化
大数据·后端·flink
小毛驴85033 分钟前
在Spring Boot开发中,HEAD、OPTIONS和 TRACE这些HTTP方法各有其特定的应用场景和实现方式
spring boot·后端·http
zl9798991 小时前
SpringBoot-依赖管理和自动配置
spring boot·后端·状态模式
JaguarJack1 小时前
PHP8.5 的新 URI 扩展
后端·php
绝无仅有1 小时前
面试真实经历某商银行大厂数据库MYSQL问题和答案总结(一)
后端·面试·github
绝无仅有1 小时前
Docker 实战经验之关键文件误删恢复指南
后端·面试·github
QZQ541881 小时前
go中reflect的底层原理
后端
白衣鸽子1 小时前
CAP理论:分布式系统的“不可能三角”
后端·架构
焰火19991 小时前
[Java]基于Spring的轻量级定时任务动态管理框架
java·后端
Victor3562 小时前
Redis(69)Redis分布式锁的优点和缺点是什么?
后端