在您的R人生的某个时刻,您可能希望与不使用R的同事共享分析结果。 有很多方法可以做到这一点。 最简单(也是最便宜)的一种方法是通过电子邮件发送结果。

但它是一种悲哀自动化您的整个分析流程,仅手工工艺,并在年底发送电子邮件。 幸运的是,您不必这样做。 有几个R程序包可让您直接从R脚本发送电子邮件。 在本文中,我将演示其中的一个:Jim Hester的gmailr ,他现在是RStudio的软件工程师。

显然,您需要一个Gmail帐户,如果您没有Gmail帐户,则可以免费设置。 然后,在您可以使用R中的帐户之前,您需要对其进行设置以进行API访问。 就是这样。

转到console.developers.google.com (是的,这是一个子子网域)。 如果您还没有开发人员项目,系统将要求您创建一个。

在信息中心的顶部,您应该看到“启用API和服务”的选择。 点击那个。

沙龙·马克斯(IDG)

您可以选择在Google Developers Console仪表板中启用API。

接下来,您将要搜索Gmail API。 单击该,然后单击启用。

R脚本将需要凭据,因此请单击右上角的创建凭据。

沙龙·马克斯(IDG)

为Gmail API创建授权凭证。

根据Jim Hester的指示,我们需要一个客户ID,所以我将选择客户ID。

沙龙·马克斯(IDG)

创建一个客户端ID。

现在,它要求一个应用程序类型。 由于这里没有“ R脚本”,因此我想选择“其他”。 但是所有单选按钮均变灰。 那是因为我还没有配置同意屏幕。 如果您专注于单选按钮选择,那么很容易错过; 在右上角。 点击那个。

沙龙·马克斯(IDG)

在选择应用程序类型之前,请不要忘记配置您的同意屏幕。

您的电子邮件地址应该已经在同意屏幕中。 唯一的其他要求是应用程序的名称。 您可以随便叫它。

吉姆说,其余的默认设置都可以,请向下滚动并保存。 现在,您应该能够选择其他应用程序类型,为应用程序命名,然后单击创建。

然后,控制台应为您提供客户端ID和客户端密码。 您可以根据需要将它们添加到R环境中来使用它们。 但是Jim建议改为下载JSON文件。 您可以将其下载到R项目的工作目录,并记住为其指定的文件名。

沙龙·马克斯(IDG)

您可以使用Gmail API凭据下载JSON文件。

这样就完成了在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发送电子邮件相关推荐

  1. java发送gmail邮件_如何从R和Gmail发送电子邮件

    java发送gmail邮件 在您的R人生的某个时刻,您可能希望与不使用R的同事共享分析结果. 有很多方法可以做到这一点. 最简单(也是最便宜)的方法之一是通过电子邮件发送结果. 但它是一种悲哀自动化您 ...

  2. Java 使用JavaMail通过Gmail发送电子邮件

    JavaMail提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API可以方便地执行一些常用的邮件传输.可以基于JavaMail开发出类似于Microsoft Outloo ...

  3. java gmail 发送邮件_Java通过Gmail发送电子邮件

    大家好,我刚刚尝试获取一些Java代码,以通过gmail向Java用户发送电子邮件,这就是我所拥有的: @ManagedBean @ViewScoped public class email { // ...

  4. php发送gmail,使用GMail SMTP服务器从PHP页面发送电子邮件

    我试图通过Gmail的SMTP服务器从一个PHP页面发送电子邮件,但是我得到了这个错误: 身份验证失败[SMTP:SMTP服务器不支持身份验证(代码:250,响应:mx.google.com at y ...

  5. Spring通过Gmail SMTP服务器MailSender发送电子邮件

    Spring提供了一个有用的"org.springframework.mail.javamail.JavaMailSenderImpl"类,通过JavaMail API 简化邮件发 ...

  6. spring smtp_使用Spring使用Java发送电子邮件– GMail SMTP服务器示例

    spring smtp 对于使用Java发送电子邮件, JavaMail API是标准解决方案. 如官方网页所述," JavaMail API提供了独立于平台和协议的框架来构建邮件和消息传递 ...

  7. 使用Spring使用Java发送电子邮件– GMail SMTP服务器示例

    对于使用Java发送电子邮件, JavaMail API是标准解决方案. 如官方网页所述," JavaMail API提供了独立于平台和协议的框架来构建邮件和消息传递应用程序". ...

  8. smtp gmail_如何使用Gmail SMTP服务器在WordPress中发送电子邮件

    smtp gmail Are you having trouble sending emails from your WordPress site? 您是否无法从WordPress网站发送电子邮件? ...

  9. 如何使用PHP发送电子邮件?

    本文翻译自:How to send an email using PHP? I am using PHP on a website and I want to add emailing functio ...

最新文章

  1. 9月Python开源项目Top10
  2. MySQL同表关联的id替换名称_MySQL JOIN用另一个表中的值替换ID
  3. C#中修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限
  4. javafx有布局管理器吗_JavaFX技巧17:带有AnchorPane的动画工作台布局
  5. warning no newline at the end of file
  6. 这7所高校明明是985,却一个A+学科都没有!
  7. ansys里面自带chemkin_ANSYS CFD原来还有这么多功能,初学者都进来了解
  8. 软考笔记(数据结构篇)———— 二叉树、树、森林转换
  9. Ubuntu下如何安装Dynamips
  10. vb将excel数据导入mysql_用VB做怎么将Excel数据导入SQL数据库中
  11. PLC系统的选型以及应用方法
  12. Bootstrap:文字排版与图片样式
  13. C语言完整知识体系总结
  14. 【PB】数据窗口的修改属性
  15. 「HTML+CSS」--自定义按钮样式【004】
  16. 未点击安全退出直接拔出u盘文件丢失恢复图文教程
  17. 数据挖掘技术的算法与应用
  18. ipmitool 修改
  19. migo获取header sap_SAP Migo增强 105时通过提货单号自动带出批次和生产日期
  20. K-均值聚类算法(Python,机器学习 ,绘图)

热门文章

  1. 醋不只是能杀菌 食醋的25种生活妙用
  2. 安装Linux出现致命错误,安装liunx出现致命错误,为什么,如何解决?
  3. windows xp 算号原理
  4. java实现数据挖掘_数据挖掘Apriori算法的java实现
  5. [Inheritance]Collection with Inheritance (eden)
  6. 淘宝官方集运(大陆发货,收货地台湾)流程
  7. 形容人的内核是什么意思_请问甜文的内核是什么?
  8. nest.dll_每日新闻摘要:再见Nest.com,您好Google Store
  9. 使用java理解程序逻辑,知识总结
  10. Ubuntu13.04配置完全指南(四)安装常用软件包