我正在通过Access与VBA合作创建邮件。
当我将图像大小调整为小于实际大小时,它会嵌入。当我省略尺寸或以实际尺寸放入时,图像作为附件出现。
下面是代码片段,miniplane.jpg是附件。它的实际尺寸是600x160。如果我将代码更改为300x80,则会显示。
Sub send_SHCmail()
'>>>> Declarations >>>>
Dim strPath As String
Dim strFileName As String
Set appOutLook = CreateObject("Outlook.Application")
Set MailOutLook = appOutLook.CreateItem(olMailItem)
Dim olApp As Object
Dim objMail As Object
Set SHCData1 = Nothing
Set SHCData2 = Nothing
'>>>> Email Creation and Outlook Error Loop >>>>
On Error Resume Next 'Keep going if there is an error
Set olApp = GetObject(, "Outlook.Application") 'See if Outlook is open
If Err Then 'Outlook is not open
Set olApp = CreateObject("Outlook.Application") 'Create a new instance
End If
'Create e-mail item
Set objMail = olApp.CreateItem(olMailItem)
With objMail
'Set body format to HTML
.BodyFormat = olFormathtml
.To = "[email protected]"
.Bcc = SHCDistribution
.Sentonbehalfofname = "[email protected]"
.Subject = "Planning Report - " & Format(Now, "MMMM d, yyyy")
.Attachments.Add "\\local\Sdata\Logo-Facet-01.png", olByValue, 0
.Attachments.Add "\\local\Sdata\miniplane.jpg", olByValue, 0
.HTMLBody = "<!DOCTYPE html>"
'Body Header
.HTMLBody = .HTMLBody & "<html><head><body>"
.HTMLBody = .HTMLBody & "<img src=""cid:Logo-Facet-01.png"" alt=""Image Missing"" width=""215.6"" height=""96.53"" style=""display: block;"" />"
.HTMLBody = .HTMLBody & "<img src=""cid:miniplane.jpg"" alt=""Image Missing"" width=""600"" height=""160"" style=""display: block;"" />"
.Display
End With
End Sub
首先,不要使用HTMLBody
作为中间变量 - 读取和设置它是昂贵的。使用局部变量构建HTML,然后只设置一次HTMLBody
属性。
如果您通过img
属性设置src
标记,则必须设置PR_ATTACH_CONTENT_ID
属性 - 请参阅How to add images from resources folder as attachment and embed into outlook mail body in C#