如何从R和Gmail发送电子邮件
在您的R人生的某个时刻,您可能希望与不使用R的同事共享分析结果。 有很多方法可以做到这一点。 最简单(也是最便宜)的一种方法是通过电子邮件发送结果。
但它是一种悲哀自动化您的整个分析流程,仅手工工艺,并在年底发送电子邮件。 幸运的是,您不必这样做。 有几个R程序包可让您直接从R脚本发送电子邮件。 在本文中,我将演示其中的一个:Jim Hester的gmailr ,他现在是RStudio的软件工程师。
显然,您需要一个Gmail帐户,如果您没有Gmail帐户,则可以免费设置。 然后,在您可以使用R中的帐户之前,您需要对其进行设置以进行API访问。 就是这样。
转到console.developers.google.com (是的,这是一个子子网域)。 如果您还没有开发人员项目,系统将要求您创建一个。
在信息中心的顶部,您应该看到“启用API和服务”的选择。 点击那个。
接下来,您将要搜索Gmail API。 单击该,然后单击启用。
R脚本将需要凭据,因此请单击右上角的创建凭据。
根据Jim Hester的指示,我们需要一个客户ID,所以我将选择客户ID。
现在,它要求一个应用程序类型。 由于这里没有“ R脚本”,因此我想选择“其他”。 但是所有单选按钮均变灰。 那是因为我还没有配置同意屏幕。 如果您专注于单选按钮选择,那么很容易错过; 在右上角。 点击那个。
您的电子邮件地址应该已经在同意屏幕中。 唯一的其他要求是应用程序的名称。 您可以随便叫它。
吉姆说,其余的默认设置都可以,请向下滚动并保存。 现在,您应该能够选择其他应用程序类型,为应用程序命名,然后单击创建。
然后,控制台应为您提供客户端ID和客户端密码。 您可以根据需要将它们添加到R环境中来使用它们。 但是Jim建议改为下载JSON文件。 您可以将其下载到R项目的工作目录,并记住为其指定的文件名。
这样就完成了在Google端的设置,终于可以使用一些R代码了。
首先,请确保您已安装gmailr软件包。 它在CRAN上可用,因此您可以使用install.packages("gmailr")
。 然后使用library(gmailr)
在脚本中加载包。
在执行其他操作之前,您需要设置工作的R会话以使用下载的JSON凭证文件。 您可以使用use_secret_file()
函数,并将JSON文件的名称作为参数来实现。 如果我调用JSON凭证文件DoMoreWithR.json,则命令为
use_secret_file("DoMoreWithR.json")
实际上,发送消息非常容易。
对于一些样本数据,我下载了美国的每月失业率,然后创建了一个名为Latest_msg的文本字符串,其中包含有关最新失业率的信息。 请注意,在下面的代码中,我使用胶水包来组装我想要的消息字符串,但这是因为我喜欢这样做。 paste()
或paste0()
同样有效。
您可以在电子邮件中使用任何R生成的数据。 如果您想跟我一起学习,请参考以下代码(您需要安装pacman软件包):
pacman::p_load(quantmod, glue, xts, dplyr, ggplot2)
getSymbols("UNRATE", src="FRED") unemployment <- coredata(UNRATE)month_starting <- index(UNRATE)series_length <- length(unemployment)
latest_msg <- glue("The latest US unemployment rate was {unemployment[series_length]}, in the month starting {month_starting[series_length]}. That's {unemployment[series_length] - unemployment[series_length - 1]} percentage points difference from the prior month.")
接下来,我要创建一个MIME电子邮件对象,然后添加一个to地址,一个from地址,主题文本和我的邮件正文。
my_email_message <- mime() %>% to("some_email_address@somedomain.com") %>% from("domorewithr@gmail.com") %>% subject("My test message") %>% text_body(latest_msg)
如果执行此操作,然后使用str(my_text_message)
检查my_email_message的结构,您会看到它是一个带有mime
类的列表。
创建MIME消息对象后,可以使用send_message()
函数发送它。 该参数只是我的MIME对象的名称,在本例中为my_email_message。 所以在这种情况下的完整命令是
send_message(my_email_message)
首次运行send_message()时,可能会询问您是否要在R个会话之间缓存授权。 我建议你说是的。 首次运行此程序时,还会在浏览器中要求您授权R脚本使用您的Google帐户。
您可以使用gmailr做更多的事情。 一种选择是创建HTML消息,因此您可以使用粗体和斜体之类的标记。
在这里,我的消息正文包括类似HTML的段落标记以及粗体和斜体,然后将其发送到我的工作地址。
html_msg_text <- glue("<p>The latest US unemployment rate was <b>{unemployment[series_length]}</b>, in the month starting {month_starting[series_length]}. That's {unemployment[series_length] - unemployment[series_length - 1]} percentage points difference from the prior month.</p><p><i>Data from the U.S. Bureau of Labor Statistics.</i></p>")
my_html_message <- mime() %>% to("sharon_machlis@idg.co") %>% from("domorewithr@gmail.com") %>% subject("My test message") %>% html_body(html_msg_text)
send_message(my_html_message)
不幸的是,我不知道一种将R生成的图像直接直接包含在消息正文中的方法。 但是,将其中一个作为附件非常简单。
在下面的脚本顶部,我将失业率数据转换为具有2000年及以后的指标的数据框,因此可以使用ggplot对其进行图形处理,然后将图形保存到文件中。
但是,代码的下一部分是了解电子邮件的重要内容。 首先,像以前一样,我使用胶水包为我的消息文本创建文本字符串。 新功能是创建我的MIME对象的最后两行代码。 最后一行attach_file()
将我的PNG文件附加到电子邮件中。 如果希望文本显示在电子邮件正文中,则前一行很重要。 如果text_body()
正文文本同时使用text_body()
和 attach_part()
,则在附加文件时文本不会显示。 只是要记住的东西。
然后,我可以使用相同的send_message()
函数发送它。
un_df <- data.frame(month_starting, unemployment) %>% filter(month_starting >= as.Date("2000-01-01")) %>% rename(unemployment = UNRATE)
mygraph <- ggplot(un_df, aes(month_starting, unemployment)) + geom_line() + ggtitle("US Monthly Unemployment") + xlab("Month Starting") + ylab ("")
ggsave("unemployment_graph.png")
msg_text <- glue("The latest US unemployment rate was {unemployment[series_length]}, in the month starting {month_starting[series_length]}. That's {unemployment[series_length] - unemployment[series_length - 1]} percentage points difference from the prior month. A graph of the data since January 2000 is attached.")
message2 <- mime() %>% to("sharon_machlis@idg.com") %>% from("domorewithr@gmail.com") %>% subject("My text message with attached graph") %>% text_body(msg_text) %>% attach_part(msg_text) %>% attach_file("unemployment_graph.png")
send_message(message2)
如果需要,可以在发送Gmail之前使用函数create_draft()
在Gmail帐户中创建草稿邮件。 在这种情况下, create_draft(message2)
将创建我的文件附件消息的草稿。
如果您想了解所有操作的效果,请查看本文顶部的视频。 有关R的更多提示,请转到InfoWorld上的“用R做更多”视频页面,或查看YouTube上的“用R做更多”播放列表 。
From: https://www.infoworld.com/article/3398701/how-to-send-email-from-r-and-gmail.html
如何从R和Gmail发送电子邮件相关推荐
- java发送gmail邮件_如何从R和Gmail发送电子邮件
java发送gmail邮件 在您的R人生的某个时刻,您可能希望与不使用R的同事共享分析结果. 有很多方法可以做到这一点. 最简单(也是最便宜)的方法之一是通过电子邮件发送结果. 但它是一种悲哀自动化您 ...
- Java 使用JavaMail通过Gmail发送电子邮件
JavaMail提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API可以方便地执行一些常用的邮件传输.可以基于JavaMail开发出类似于Microsoft Outloo ...
- java gmail 发送邮件_Java通过Gmail发送电子邮件
大家好,我刚刚尝试获取一些Java代码,以通过gmail向Java用户发送电子邮件,这就是我所拥有的: @ManagedBean @ViewScoped public class email { // ...
- php发送gmail,使用GMail SMTP服务器从PHP页面发送电子邮件
我试图通过Gmail的SMTP服务器从一个PHP页面发送电子邮件,但是我得到了这个错误: 身份验证失败[SMTP:SMTP服务器不支持身份验证(代码:250,响应:mx.google.com at y ...
- Spring通过Gmail SMTP服务器MailSender发送电子邮件
Spring提供了一个有用的"org.springframework.mail.javamail.JavaMailSenderImpl"类,通过JavaMail API 简化邮件发 ...
- spring smtp_使用Spring使用Java发送电子邮件– GMail SMTP服务器示例
spring smtp 对于使用Java发送电子邮件, JavaMail API是标准解决方案. 如官方网页所述," JavaMail API提供了独立于平台和协议的框架来构建邮件和消息传递 ...
- 使用Spring使用Java发送电子邮件– GMail SMTP服务器示例
对于使用Java发送电子邮件, JavaMail API是标准解决方案. 如官方网页所述," JavaMail API提供了独立于平台和协议的框架来构建邮件和消息传递应用程序". ...
- smtp gmail_如何使用Gmail SMTP服务器在WordPress中发送电子邮件
smtp gmail Are you having trouble sending emails from your WordPress site? 您是否无法从WordPress网站发送电子邮件? ...
- 如何使用PHP发送电子邮件?
本文翻译自:How to send an email using PHP? I am using PHP on a website and I want to add emailing functio ...
最新文章
- 9月Python开源项目Top10
- MySQL同表关联的id替换名称_MySQL JOIN用另一个表中的值替换ID
- C#中修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限
- javafx有布局管理器吗_JavaFX技巧17:带有AnchorPane的动画工作台布局
- warning no newline at the end of file
- 这7所高校明明是985,却一个A+学科都没有!
- ansys里面自带chemkin_ANSYS CFD原来还有这么多功能,初学者都进来了解
- 软考笔记(数据结构篇)———— 二叉树、树、森林转换
- Ubuntu下如何安装Dynamips
- vb将excel数据导入mysql_用VB做怎么将Excel数据导入SQL数据库中
- PLC系统的选型以及应用方法
- Bootstrap:文字排版与图片样式
- C语言完整知识体系总结
- 【PB】数据窗口的修改属性
- 「HTML+CSS」--自定义按钮样式【004】
- 未点击安全退出直接拔出u盘文件丢失恢复图文教程
- 数据挖掘技术的算法与应用
- ipmitool 修改
- migo获取header sap_SAP Migo增强 105时通过提货单号自动带出批次和生产日期
- K-均值聚类算法(Python,机器学习 ,绘图)
热门文章
- 醋不只是能杀菌 食醋的25种生活妙用
- 安装Linux出现致命错误,安装liunx出现致命错误,为什么,如何解决?
- windows xp 算号原理
- java实现数据挖掘_数据挖掘Apriori算法的java实现
- [Inheritance]Collection with Inheritance (eden)
- 淘宝官方集运(大陆发货,收货地台湾)流程
- 形容人的内核是什么意思_请问甜文的内核是什么?
- nest.dll_每日新闻摘要:再见Nest.com,您好Google Store
- 使用java理解程序逻辑,知识总结
- Ubuntu13.04配置完全指南(四)安装常用软件包