18 Office 文档
本章主要介绍办公文档 Word、演示报告 PowerPoint 和电子邮件 Email 三类应用。在 R 语言社区中,Quarto 文档支持输出 Word 和 PowerPoint 格式,blastula 包可以将 R Markdown 文档转化为电子邮件内容,从而实现代码化、可重复和批量化,提高工作效率。
18.1 Word 文档
18.2 PowerPoint 演示
18.3 电子邮件
Rahul Premraj 基于 rJava 包开发的 mailR 虽然还未在 CRAN 上正式发布,但是已得到很多人的关注,也被广泛的使用,目前作者已经不维护了,继续使用有一定风险。 RStudio 公司 Richard Iannone 新开发的 blastula 扔掉了 Java 的重依赖,更加轻量化、现代化,支持发送群组邮件。
18.3.1 curl 包
curl 包提供的函数 send_mail()
本质上是在利用 curl 软件发送邮件,举个例子,邮件内容如下:
From: "张三" <邮箱地址>
To: "李四" <邮箱地址>
Subject: 测试邮件
你好:
这是一封测试邮件!
将邮件内容保存为 mail.txt 文件,然后使用 curl 命令行工具将邮件内容发出去。
curl --url 'smtp://公司邮件服务器地址:开放的端口号' \
--ssl-reqd --mail-from '发件人邮箱地址' \
--mail-rcpt '收件人邮箱地址' \
--upload-file data/mail.txt \
--user '发件人邮箱地址:邮箱登陆密码'
注释
Gmail 出于安全性考虑,不支持这种发送邮件的方式,会将邮件内容阻挡,进而接收不到邮件。
18.3.2 blastula 包
下面以 blastula 包为例怎么支持 Gmail、Outlook、QQ 等邮件发送,先安装系统软件依赖,CentOS 8 上安装依赖
接着配置邮件帐户,这一步需要邮件账户名和登陆密码,配置一次就够了,不需要每次发送邮件的时候都配置一次
library(blastula)
create_smtp_creds_key(
id = "outlook",
user = "zhangsan@outlook.com",
provider = "outlook"
)
第二步,准备邮件内容,包括邮件主题、发件人、收件人、抄送人、密送人、邮件主体和附件等。
attachment <- "data/mail.txt" # 如果没有附件,引号内留空即可。
# 这个Rmd文件渲染后就是邮件的正文,交互图形和交互表格不适用
body <- "examples/html-document.Rmd"
# 渲染邮件内容,生成预览
email <- render_email(body) |>
add_attachment(file = attachment)
email
最后,发送邮件
smtp_send(
from = c("张三" = "xxx@outlook.com"), # 发件人
to = c("李四" = "xxx@foxmail.com",
"王五" = "xxx@gmail.com"), # 收件人
cc = c("赵六" = "xxx@outlook.com"), # 抄送人
subject = "这是一封测试邮件",
email = email,
credentials = creds_key(id = "outlook")
)
密送人实现群发单显,即一封邮件同时发送给多个人,每个收件人只能看到发件人地址而看不到其它收件人地址。