You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用RDComClient在Outlook邮件中插入OFT模板?

在Outlook中嵌入预制OFT模板或复杂HTML的解决方案

原代码的核心问题

你之前错误地把OFT模板当作图片附件添加,还用<img>标签尝试引用——OFT是Outlook专属的邮件模板文件,根本不是图片格式,这么做肯定无法正常显示。另外嵌入图片时没设置对应的CID属性,即使附件添加成功,HTML里的图片引用也可能失效。

下面给你两种可行的解决方案:


方案一:直接加载OFT模板创建邮件

这是使用OFT模板的正确方式,直接基于模板生成邮件,模板里的格式、内容都会被完整继承,还能按需修改收件人、添加附件。

# 启动Outlook客户端
Outlook <- COMCreate("Outlook.Application")

# 直接从OFT模板创建邮件(替换为你的OFT文件路径)
Email <- Outlook$CreateItemFromTemplate("html/html.oft")

# 添加原有附件
Email[["attachments"]]$Add("PDFS/genericos/CG_GMMC.pdf")
Email[["attachments"]]$Add("PDFS/genericos/Guia_de_Acompanamiento_2023.pdf")
Email[["attachments"]]$Add(paste0("zips/poliza", base_cruzada_p_envio$numcertceros[c], ".zip"))

# 嵌入图片并设置CID(确保HTML里的cid引用能匹配)
img_path <- "html/AXA_Assistance_com.jpg"
Email[["attachments"]]$Add(img_path)
# 获取刚添加的图片附件(索引根据附件添加顺序调整,这里是第4个)
img_attachment <- Email[["attachments"]]$Item(4)
# 设置CID属性,和HTML里的src='cid:AXA_Assistance_com.jpg'对应
img_attachment$PropertyAccessor$SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", "AXA_Assistance_com.jpg")

# 修改收件人和主题(如果模板已有主题,可选择覆盖或保留)
Email[["to"]] <- base_cruzada_p_envio$Correo[c]
Email[["subject"]] <- "¡Tu póliza de GMM ha sido renovada!"

# 显示邮件检查内容
Email$Display()

# 发送邮件
Email$Send()

# 等待Outlook完成发送(时间可按需调整)
Sys.sleep(14.0)

# 清理对象
rm(Outlook, Email)

方案二:读取外部HTML文件作为邮件正文

如果你的"html.oft"其实是普通HTML文件(只是命名错误),可以直接读取HTML内容作为邮件的HTML正文,同时保留嵌入图片和添加附件的逻辑。

# 启动Outlook客户端
Outlook <- COMCreate("Outlook.Application")

# 创建空白邮件
Email <- Outlook$CreateItem(0)

# 添加原有附件
Email[["attachments"]]$Add("PDFS/genericos/CG_GMMC.pdf")
Email[["attachments"]]$Add("PDFS/genericos/Guia_de_Acompanamiento_2023.pdf")
Email[["attachments"]]$Add(paste0("zips/poliza", base_cruzada_p_envio$numcertceros[c], ".zip"))

# 嵌入图片并设置CID
img_path <- "html/AXA_Assistance_com.jpg"
Email[["attachments"]]$Add(img_path)
img_attachment <- Email[["attachments"]]$Item(3) # 图片是第3个附件,索引按需调整
img_attachment$PropertyAccessor$SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", "AXA_Assistance_com.jpg")

# 读取外部HTML文件内容(替换为你的HTML文件路径)
html_content <- readLines("html/你的实际HTML文件.html", warn = FALSE)
html_content <- paste(html_content, collapse = "\n")

# 如果HTML里有图片占位符,替换为对应的CID(比如把{{IMG_CID}}换成cid:AXA_Assistance_com.jpg)
# html_content <- gsub("{{IMG_CID}}", "cid:AXA_Assistance_com.jpg", html_content)

# 设置邮件正文为HTML内容
Email[["HTMLbody"]] <- html_content

# 设置收件人和主题
Email[["to"]] <- base_cruzada_p_envio$Correo[c]
Email[["subject"]] <- "¡Tu póliza de GMM ha sido renovada!"

# 显示邮件检查
Email$Display()

# 发送邮件
Email$Send()

# 等待发送完成
Sys.sleep(14.0)

# 清理对象
rm(Outlook, Email)

内容的提问来源于stack exchange,提问作者Cesar Amezcua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 01:45:39