如何发送电子邮件与R和Gmail

信息世界|2019年6月5日

了解如何使用R编程语言和Gmail自动发送电子邮件。

版权©2019足球竞彩网下载

嗨。我是IDG Communications的Sharon Machlis,这里是Do More with R: Send email from your R script with Gmail的第28集。
在你的R生活中的某个时刻,你可能想要与没有使用R的同事分享你的分析结果。有很多方法可以做到这一点。最简单(也是最便宜)的方法之一就是用电子邮件发送你的搜索结果。
但是将整个分析工作流程自动化,然后必须手动发送电子邮件,这有点可悲。幸运的是,您不必这样做。有几个R包可以让你直接从R脚本发送电子邮件。在这一集中,我将演示其中的一个:由Jim Hester设计的gmailr,他现在是RStudio的一名软件工程师。
显然,您需要一个Gmail帐户,如果您没有这个帐户,可以免费设置它。然后,在使用该帐户之前,需要将其设置为API访问。这是如何。
去控制台。开发者。谷歌。com。是的,这是一个子域名:console.developers.google.com。
在顶部,您应该看到“启用api和服务”选项。“点击。
接下来,您需要搜索gmail API。单击它,然后单击Enable。如果您的帐户中还没有任何项目,您可能需要添加一个。我已经有一个叫用R做更多。
我们需要凭证,因此我将单击右上方的Create credentials。根据Jim Hester的指示,我们需要一个客户ID,所以我会选择OAuth客户ID。
现在它要求应用程序类型。因为“R script”不在这里,我想选择“Other”。但是所有的单选按钮都是灰色的。别担心,那是因为我们还没有配置好同意屏幕。这很容易被忽略,看右上角。点击这个。
你的电子邮件地址应该已经填好了。唯一的其他需求是应用程序的名称。毫不奇怪,我会说用R做更多。
Jim说其余的默认设置都没问题,所以我将向下滚动并保存。现在我可以选择应用程序类型Other,给它一个名称,然后单击Create。
您将获得客户端ID和客户端机密。(如果你想知道为什么我要让你看这些——一个非常糟糕的安全实践——那是因为我会在你看这个视频之前删除这些凭证。)
如果需要,可以将客户端ID和secret添加到R环境中。但是Jim建议下载json文件。我将把它下载到我的工作目录中,并将其命名为DoMoreWithR.json。
好了,谷歌端的设置完成了!现在我们来看一些R代码。
首先,确保您已经安装了gmailr包,它可以在CRAN上使用。加载库。在执行其他操作之前,您需要设置工作会话以使用下载的json凭据文件。使用use_secret_file()函数执行此操作,并将文件的名称作为参数。
实际上发送消息是最简单的部分!
在这里,我下载了每月的美国失业率,然后创建了一个名为latest_msg的文本字符串,其中包含关于最新失业率的信息。对于纯文本电子邮件消息,我想创建一个“mime”对象,然后添加一个to address、一个from address、主题文本和我的消息正文。
如果我检查my_text_message的结构 您可以看到它是一个列表,类是mime。
对于这个测试,我将发送一个消息到domorewithr@gmail.com。
创建mime消息对象后,我可以使用send_message()函数发送它。参数只是我的mime对象的名称,在本例中是my_email_message。
第一次运行send_message()时,您可能会被问到是否要在R会话之间缓存授权。我建议你说是的。因为我之前说是的,所以我不会再被要求登录我的谷歌账户。第一次尝试时,浏览器可能会要求您授权R脚本使用您的谷歌帐户。
你可以做的还有很多。一种选择是创建HTML消息,这样就可以使用粗体和斜体这样的标记。
在这里,我的消息体包括HTML,如段落标记和粗体和斜体。我会将其发送到一个外部电子邮件帐户DoMoreWithR@machlis.com。
不幸的是,我不知道如何将直接从R生成的图像包含在消息体中。但是把一个作为附件是很简单的。
在这个脚本的顶部,我将把我的失业率数据转换为一个包含2000年及以后的指标的数据框架,因此我可以使用ggplot来绘制它,然后将图形保存到一个文件中。
下一部分是了解电子邮件的重要内容。首先,像以前一样,我用glue包为我的消息文本创建一个文本字符串。你也可以用浆糊或巴斯德0,但我喜欢胶水。新的是创建mime对象的最后两行代码。最后一行attach_file()将我的png文件附加到电子邮件中。如果您希望文本显示在电子邮件正文中,那么前面的行非常重要。如果不同时对正文文本使用text_body()和attach_part(),那么在附加文件时它就不会显示出来。只是要记住。
现在我可以像往常一样使用send_message发送它 如果需要,可以使用函数create_draft()而不是send_message()在gmail帐户中创建草稿消息。然后寻找草案>。
现在你有了:来自R脚本的电子邮件。这就是本期节目的全部内容,感谢收看!想了解更多关于R的技巧,请访问go dot infoworld . com斜杠more With R,除R外都是小写的。你也可以在YouTube IDG Tech Talk频道上找到更多关于R的播放列表。希望下一集再见!
受欢迎的
IDG.tv的精选视频