vba电子邮件嵌入图像未显示 [英] vba email embed image not showing

查看:108
本文介绍了vba电子邮件嵌入图像未显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have an odd experience here. I have had loads of problems embedding a logo or image to emails using the src=cid... found out it wont show if not setting size for example.

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

I have an Access application to send from, but have broken it down to the code below using Excel.

但是

现在工作正常,如果我显示电子邮件然后发送它.根本不做其他任何事情.只显示然后发送.

It now works fine, if I display the email and then send it. Not doing anything else at all. Just display then send.

如果我直接从 vba 发送,图像将无法正常显示.附件符号显示,Outlook 本身会将图像内联,但说,gmail,不会.这不是 gmail 的错,因为 Outlook 中显示了 attachmet 符号.如果我显示然后发送,则不会.

If I send directly from vba, the image will not display properly. The attachment symbol shows and Outlook itself will put the image inline, but say, gmail, wont. It's not gmails fault, as the attachmet symbol shows in Outlook. It doesn't if I display and then send.

我怀疑它仍然与尺寸或放置有关.如果没有宽度部分,Outlook 仍会在正确的位置显示图像,但仍显示为附件.所以当你显示并按下发送时,我必须有另一个属性集或其他东西.我不知道是什么!

I suspect it's still something with sizing or placing. Without the width part, Outlook will still show the image at correct place, but still show as attachment. So when you display and press send then there must me another attribute set or something. I cannot find out what!

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

Hope someone can help or has an idea! I'm not the strongest in HTLM, so it's probably something simple...

谢谢

约翰

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:	emplogo.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 Astafiev.

Just to post the simple form of code that works. Big thanks to @Eugene Astafiev.

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:	emplogo.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

这篇关于vba电子邮件嵌入图像未显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆