2015-04-17 106 views
0

我可以使用以下代码将Outlook电子邮件消息粘贴到网页中。Outlook 2010电子邮件到网页,包括图像

VBA

Sub HTMLClipboard() 
    Dim M As MailItem, Buf As MSForms.DataObject 
    Set M = ActiveExplorer().Selection.Item(1) 
    Set Buf = New MSForms.DataObject 
    Buf.SetText M.HTMLBody 
    Buf.PutInClipboard 
End Sub 

HTML

<div id="Data"></div> 
<textarea id="TA"></textarea> 

jQuery的

$(document).on('paste', function(e) { 
    $('#TA').focus(); 
    setTimeout(function() { 
    $('#Data') 
     .html($('#TA').val()); 
    }); 
}); 

这个伟大的工程除非 HTMLBody中有图像。在这种情况下,我得到一个破碎的图片src像这样:

<img width=596 height=381 
id="Picture_x0020_1" 
src="cid:[email protected]" 
> 

有没有办法对VBA函数内的图像数据进行编码,最好是作为数据URI?

回答

0

想出了一个解决方案,并感谢尤金指向我的附件集合。 (我不知道它包含嵌入式图像。)

Sub HTMLClipboard() 
    Dim M As MailItem, Buf As MSForms.DataObject 
    Set M = ActiveExplorer().Selection.Item(1) 
    Set Buf = New MSForms.DataObject 

    b = M.HTMLBody 

    Dim i As Integer 
    For i = 1 To M.Attachments.Count 
    fn = M.Attachments.Item(i).PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001E") 
    If fn > "" Then 
     M.Attachments.Item(i).SaveAsFile "d:\temp" 
     base64 = EncodeFile("d:\temp") 
     b = Replace(b, "cid:" & fn, "data:image/png;base64," & base64) 
    End If 
    Next 
    Buf.SetText b 
    Buf.PutInClipboard 
End Sub 

此代码:

  1. 遍历Attachments集合寻找嵌入图像。
  2. 将图像保存到临时文件。
  3. 图像二进制数据转换为使用这里找到EncodeFile功能BASE64:https://stackoverflow.com/a/8134022/3903374
  4. 替换每个图像的属性src与base64编码,其中把它变成一个数据URI。

我会对避免创建临时文件的方法感兴趣。

我现在可以在Outlook中运行宏并粘贴到我的网页上,并将图像数据嵌入到HTML本身中。

1

SRC = “CID:[email protected]

这种源字符串指示与PR_ATTACH_CONTENT_ID(DASL名称 - “http://schemas.microsoft.com/mapi/proptag/0x3712001E”)的隐藏附件属性设置为image001.png @ 01D07855.C2524830值。您可以使用Outlook项目的Attachments属性来查找图像。

查看How to add an embedded image to an HTML message in Outlook 2010了解更多信息。

+0

了解嵌入式图像数据在Attachments集合中是一大帮助,谢谢。我想知道我是否可以打开文件,将其转换为数据URI,并用该数据URI替换src属性? –

+0

您可以将其保存在磁盘上,然后将其上传到任何Web服务器上。 –

+0

谢谢,但我希望能够将图像嵌入到HTML中,而不是作为单独的文件。一旦在网页上,它将被保存到数据库中。 –

相关问题