VBA 电子邮件嵌入图像未显示



我在这里有一个奇怪的经历。我在使用 src=cid 将徽标或图像嵌入电子邮件时遇到了很多问题......发现如果不设置大小,它不会显示例如。

我有一个要发送的 Access 应用程序,但已使用 Excel 将其分解为下面的代码。

如果我显示电子邮件然后发送它,它现在工作正常。什么都不做。只需显示然后发送。

如果我直接从vba发送,图像将无法正确显示。显示附件符号,Outlook本身会将图像内联,但说,gmail,不会。这不是gmails的错,正如Outlook中显示的附件符号一样。如果我显示然后发送,则不会。

我怀疑它仍然是尺寸或放置的东西。如果没有宽度部分,Outlook仍将在正确的位置显示图像,但仍显示为附件。因此,当您显示并按发送时,必须有另一个属性集或其他东西。我找不到什么!

希望有人能帮忙或有想法!我不是HTLM中最强的,所以这可能很简单......

谢谢

John

Sub test()
    Dim oApp As Outlook.Application
    Dim oEmail As MailItem
    Dim colAttach As Outlook.Attachments
    Dim oAttach As Outlook.Attachment
    'create new Outlook MailItem
    Set oApp = CreateObject("Outlook.Application")
    Set oEmail = oApp.CreateItem(olMailItem)
    'add graphic as attachment to Outlook message
    'change path to graphic as needed
    Set colAttach = oEmail.Attachments
    Set oAttach = colAttach.Add("C:templogo.jpg")
    oEmail.Close olSave
    'change the src property to 'cid:your picture filename'
    'it will be changed to the correct cid when its sent.
    oEmail.HTMLBody = "<BODY><IMG src=""cid:logo.jpg"" width=200> </BODY>"
    oEmail.Save
    oEmail.To = "someemailtogoinhere@gmail.com"
    oEmail.Subject = "test"
    oEmail.Display
    'oEmail.Send
    Set oEmail = Nothing
    Set colAttach = Nothing
    Set oAttach = Nothing
    Set oApp = Nothing
End Sub

只是为了发布简单的代码形式。非常感谢@Eugene·阿斯塔菲耶夫。

Sub test()
    Dim oApp As Outlook.Application
    Dim oEmail As MailItem
    Dim colAttach As Outlook.Attachments
    Dim oAttach As Outlook.Attachment
    Dim olkPA As Outlook.PropertyAccessor
    Const PR_ATTACH_CONTENT_ID = "http://schemas.microsoft.com/mapi/proptag/0x3712001F"
    'create new Outlook MailItem
    Set oApp = CreateObject("Outlook.Application")
    Set oEmail = oApp.CreateItem(olMailItem)
    'add graphic as attachment to Outlook message
    'change path to graphic as needed
    Set colAttach = oEmail.Attachments
    Set oAttach = colAttach.Add("C:templogo.jpg")
    Set olkPA = oAttach.PropertyAccessor
    olkPA.SetProperty PR_ATTACH_CONTENT_ID, "logo.jpg"
    oEmail.Close olSave
    'change the src property to 'cid:your picture filename'
    'it will be changed to the correct cid when its sent.
    oEmail.HTMLBody = "<BODY><IMG src=""cid:logo.jpg""> </BODY>"
    oEmail.Save
    oEmail.To = "someemail@gmail.com"
    oEmail.Subject = "test"
    oEmail.Send
    Set oEmail = Nothing
    Set colAttach = Nothing
    Set oAttach = Nothing
    Set oApp = Nothing
End Sub
您需要

使用 Attachment.PropertyAccessor 在附件上设置PR_ATTACH_CONTENT_ID属性 (DASL - http://schemas.microsoft.com/mapi/proptag/0x3712001F(。请注意,Attachment 类的 PropertyAccessor 属性是在 Outlook 2007 中添加的。

您可能会发现如何在VBA的Outlook邮件中嵌入图像?链接很有帮助。

最新更新