VBA 发送邮件的正文图片插入方法——HTML引用附件法

VBA 发送邮件的正文图片插入方法——HTML引用附件法

{"作者":"Antoniothefuture"

"关键词":["VBA","Outlook","发送邮件","HTML"]

"开发平台":"不限"

"开发语言":"VBA"

"简介": "VBA 发送邮件的正文图片插入方法——HTML引用附件法"

}

近期在做一个批量发送邮件的VBA程序,文本可以发,但是插入图片时遇到了难题,我先将word保存为html格式,然后用FSO(File System Object)读取文本并直接赋值到邮件对象(Outlook.MailItem) 的.HtmlBody 里,文本可以显示,但是图片显示不出来,其实问题也显而易见的,Word保存为Html时,图片不会随文件一起保存,而是另外放在一个文件夹了(Docx其实是一种压缩包) ,只有本机可以加载该图片,发送邮件后,由于图片没有传到服务器上,因此收件人并不会看到你的图片。

我参考这位同志的文章之后,才知道可以通过引用附件的方法来插入图片,但是他是直接拼接HTML,我的是完整的HTML,因此需要用到一种骚操作:

首先我随机定义了一个字符串,而且需要确保该字符串在正常情况下,被人写到正文里的概率很小:

S = “OIUGIQLKDNGOD"  (乱写的)

然后我将所有需要插入的图片路径放在字典对象里,key为该字符串加上一个自增变量,然后是图像的路径:(关于字典对象的其他骚操作可以翻翻我的其他文章)

N = N + 1

ImgDic.add S & N & S,ImgPath

在word保存为html格式之前,在需要插入图片的地方,插入该字符串:

TempDoc.Range(r1,r2).text = S & N

然后保存为HTML格式,用FSO读取文件中的所有字符,然后遍历字典对象,用replace将图片组装为html <img>节点,同时邮件添加附件

HtmlStr = FSOTextStream.ReadAll

DicKeys = ImgDic.keys

for i = 0 to DicKeys.count - 1

    ImgFileName = GetFileName(ImgDic(DicKeys(i)))

    NodeStr = "<img id = ""_" & ImgFileName & """ src=”“cid:" & ImgFileName * """>"

    HtmlStr = replace(HtmlStr,DicKeys(i),NodeStr)

    objOutlookMsg.attachments.add ImgDic(DicKeys(i))

next

objOutlookMsg.send 大功告成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值