首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RDCOMClient (Outlook) - ggplot

RDCOMClient (Outlook) - ggplot
EN

Stack Overflow用户
提问于 2018-04-27 17:53:27
回答 1查看 1.6K关注 0票数 4

我正在使用RDCOMClient库创建一个Outlook电子邮件。我想发送一个ggplot作为电子邮件正文内的图像(内联),而不是作为附件。

我看到这一点的唯一方法是在HTMLBody属性中将该图作为图像添加。我尝试了两种不同的方法在html中添加图像。

1 -使用RMarkdown库创建了一个包含情节的html页面。这不起作用,因为图像编码为base64字符串,而Outlook不支持该字符串。

2 -将ggplot保存到文件中,并手动创建简单的html,如:<html><body><img src="**path**/my_plot.png" /></body></html>。这也显示了一个错误,而不是图像。

是否有一种方式来添加一个图像内联?

编辑:

第二种方法适用于本地电子邮件,但是接收者的消息有一个错误,而不是实际的图像。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-29 21:47:58

您可以使用内容id (“cid”)将图像附加到电子邮件正文中,并将其引用:

代码语言:javascript
复制
library(ggplot2)
p <- ggplot(mtcars, aes(wt, mpg)) + geom_point()
ggsave(tf<-tempfile(fileext = ".png"), p, dpi = 100, width = 5, height = 5)
library(RDCOMClient)
OutApp <- COMCreate("Outlook.Application")
outMail = OutApp$CreateItem(0)
attach <- outMail[["Attachments"]]$Add(tf)
invisible(attach$PropertyAccessor()$SetProperty(
  "http://schemas.microsoft.com/mapi/proptag/0x370E001E", 
  "image/png"
))
invisible(attach$PropertyAccessor()$SetProperty(
  "http://schemas.microsoft.com/mapi/proptag/0x3712001E", 
  cid <- "myggplotimg"
))
outMail[["To"]] = "johndoe@example.com"
outMail[["Subject"]] = "ggplot image"
outMail[["HTMLbody"]] <- sprintf('<p>Here is your image:<br><img src="cid:%s"></p>', cid)
invisible(outMail$Save())
rm(outMail, attach, OutApp)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50067820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档