我正在使用RDCOMClient
用于创建 Outlook 电子邮件的库。我想发送一个ggplot
作为电子邮件正文内的图像(内联),not作为附件。
我认为这可能的唯一方法是将绘图作为图像添加到HTMLBody
财产。我尝试了两种不同的方法来在 html 中添加图像。
1 -使用RMarkdown
库中,我创建了一个带有绘图的 html 页面。这不起作用,因为图像被编码为base64
Outlook 不支持的字符串。
2 -将 ggplot 保存到文件并手动创建一个简单的 html,例如:<html><body><img src="**path**/my_plot.png" /></body></html>
。这也显示错误而不是图像。
有没有办法添加内嵌图像?
EDIT:
第二种方法适用于本地电子邮件,但收件人的消息有错误,而不是实际图像。
您可以附加图像并使用内容 ID(“cid”)在电子邮件正文中引用它:
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"]] = "[email protected] /cdn-cgi/l/email-protection"
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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)