2015-04-17 102 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中,而不是作爲單獨的文件。一旦在網頁上,它將被保存到數據庫中。 –

相關問題