java发送gmail邮件

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

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

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

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

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

沙龙·马克斯(IDG)

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

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

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

沙龙·马克斯(Sharon Machlis)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")

实际上,发送消息非常容易。

对于某些示例数据,我下载了美国的每月失业率,然后创建了一个名为lasts_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() 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做更多视频”视频页面,或查看“用R做更多YouTube”播放列表 。

翻译自: https://www.infoworld.com/article/3398701/how-to-send-email-from-r-and-gmail.html

java发送gmail邮件

java发送gmail邮件_如何从R和Gmail发送电子邮件相关推荐

  1. java发送hotmail邮件_如何使用Gmail、Yahoo或Hotmail通过Java应用程序发送电子邮件?...

    首先下载JavaMail API并确保相关的JAR文件在您的类路径中. 下面是一个使用Gmail的完整示例.import java.util.*;import javax.mail.*;import  ...

  2. java发送outlook邮件_通过Java代码发送OutLook邮件

    准备 我们想通过Java代码实现发送OutLook邮件,必须准备以下材料: OutLook邮箱 目标邮箱 查看OutLook邮箱信息 打开OutLook邮箱,在Settings中搜索或找到SMTP: ...

  3. php发送 日历邮件_如何阻止垃圾邮件发送者攻击您的Google日历

    php发送 日历邮件 Spammers have found a way to add unwanted phishing and scam events to people's Google Cal ...

  4. java发送图片邮件_使用javamail发送包含图片的html格式邮件详解

    使用JavaMail可以很方便的发送html格式的邮件,只需要将content-type设置为"text/html"即可.要在邮件中包含图片简单办法是使用image标签,src指向 ...

  5. java发送hotmail邮件_利用javamail收取Hotmail的退信

    利用javamail收取Hotmail的退信 (2007-04-05 23:44:19) Hotmail 是我最常用的Email Client.虽然时下hotmail的容量是小了些,速度也常常慢得让人 ...

  6. java 邮件发送 多人_使用JavaMailSender向多人发送个性化邮件

    我认为你想要达到的是有一些矛盾.根据你的问题,假设不同的人会收到一封带有"收件人:"列表的电子邮件,显示多个收件人,例如收件人:Abc.xyz.但是,他们每个人都有显示自己名字的电 ...

  7. java 未读邮件_如何在java中阅读来自雅虎的未读电子邮件

    我想阅读从雅虎mail.so未读邮件,我使用下面的代码,但它给了我错误 如下 javax.mail.MessagingException: Connect failed; nested excepti ...

  8. python发html邮件_在python中如何制作发送HTML格式的邮件?

    邮件的设计和制作,作为邮件营销的重要环节,直接影响着一次营销活动转化.我们知道,不同的邮件客户端有不同的解析规则.一封设计精美的邮件,如果Html格式不规范,在客户端显示的效果往往会大打折扣.所以,如 ...

  9. 给国外教授发邮件_如何给您的教授发送电子邮件并获得快速回复

    给国外教授发邮件 Photo by uniinnsbruck 图片来自uniinnsbruck Professors are some of busiest people around. They h ...

最新文章

  1. Auto ML自动特征工程
  2. 【c语言】蓝桥杯算法提高 温度转换
  3. day18 17.c3p0连接池使用
  4. 我是如何从一个新闻狗转行成为程序猿的?
  5. 盘点2010年十大出版事件 文著协“宣战”百度文库
  6. image pil 图像保存_使用PIL保存图像
  7. python mssql bulk_SqlBulkCopy:批量插入SqlServer的利器
  8. Python数据分析与处理扩展库pandas常用选项设置
  9. opencv 图像几何变换
  10. [C++基础]039_C++异常处理初级出门+中级进阶
  11. 网络安全以及常见的网络攻击
  12. 上海财经大学计算机考研好不好,五所不错的财经类大学,不歧视,不压分,你会考虑吗?...
  13. html css ps切图教程,PS网页切图和CSS布局方法教程:第二部份
  14. 华北理工大学计算机考研怎么样,华北理工大学考研难吗
  15. python snmp-cmds get示例
  16. 武汉坚守第二十二天——谣言与辟谣与慌乱
  17. 五子棋 java 棋盘变大_【java求助!】我的五子棋棋盘怎么加边框~!!??
  18. hover鼠标的悬停效果
  19. t-SNE:如何理解与高效使用
  20. 计算机控制系统在机电设备中的应用,接口技术在机电一体化控制系统中的应用...

热门文章

  1. NSIS终极篇(安装包、常用网站)
  2. 教你玩转自己的机械键盘
  3. 医疗电子方案——血压计方案
  4. Unity--分场景
  5. 自学虚幻引擎图文笔记:如何在UE4中做积雪材质
  6. 对话图灵奖得主Jeffrey Ullman:数据库不会进入周期性的坏循环|《新程序员》
  7. 使用Ubuntu 20.0.4编译Elasticfusion
  8. passport策略之passport-facebook使用facebook认证
  9. 关于时间、物质结构、四维空间的猜想
  10. 最新彩虹Ds网6.0.5最新PJ版程序源码