R语言自动发送运行提示邮件

简介: R语言自动发送运行提示邮件

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需要和之前一致
)

此时,如果正常的话,手机上就会弹出一条通知。以上只是一个简单的示例,还有其他用法,比如通过表格循环群发给不同收件人、根据不同用户自动填充修改文件内容、根据任务运行状态更新邮件等等。

相关文章
|
6月前
|
Java
使用java底层实现邮件的发送(含测试,源码)
使用java底层实现邮件的发送(含测试,源码)
|
6月前
|
API Python
做一个合格的男友,用python制作每天定时给女朋友发送邮箱问候
做一个合格的男友,用python制作每天定时给女朋友发送邮箱问候
|
监控 Python
Python自动发送消息小脚本,可用于各种聊天框~
Python自动发送消息小脚本,,懂的都懂~~
209 0
Python自动发送消息小脚本,可用于各种聊天框~
|
JavaScript
nodejs自动接收新邮件进行处理
通过imap 来接收邮箱新邮件,类似客户端系列,不过比较简单的,目前只有新邮件,后续也可以通过这个来做一个自己的邮件客户端。
nodejs自动接收新邮件进行处理
|
存储 JavaScript 安全
教你如何用一行命令:Android打包->上传->发测试包通知
教你如何用一行命令:Android打包->上传->发测试包通知
264 0
教你如何用一行命令:Android打包->上传->发测试包通知
|
Java Maven
java实现发送接收邮件的功能(详细代码步骤和jar包)
可以通过java代码发送A邮箱发送到B邮箱。
365 0
java实现发送接收邮件的功能(详细代码步骤和jar包)
|
SQL 监控 关系型数据库
【python小脚本】监听日志文件异常数据发送告警短信
老项目中有个用脚本启动的服务,很重要,用来做业务留痕的,涉及业务客户经常性投诉,是找第三方做的,时间长了维护需要花钱,老出各种未知bug,没办法处理所以机器上配了定时任务,定期的几天重启一次来解决。 但是有时候不知道什么原因,重启脚本运行,服务没起来,crond 也没有什么调度机制。 希望写个脚本做监控,当发现服务没起来,发送告警信息,或者重启服务。
172 0
|
IDE 测试技术 开发工具
3行python代码帮你轻松实现”自动发送测试报告“到指定邮箱
3行python代码帮你轻松实现”自动发送测试报告“到指定邮箱
333 0
|
监控 搜索推荐 jenkins
Jenkins 最新版qq邮箱配置实例演示,5步设置保证邮件接收成功!
Jenkins 最新版qq邮箱配置实例演示,5步设置保证邮件接收成功!
356 0
Jenkins 最新版qq邮箱配置实例演示,5步设置保证邮件接收成功!
|
移动开发 测试技术 Python
python实现邮件发送完整代码(带附件发送方式)
实例一:利用SMTP与EMAIL实现邮件发送,带附件(完整代码) __author__ = 'Administrator'#coding=gb2312 from email.Header import Headerfrom email.
1193 0