Sending Outlook Email with embedded image using VBS

后端 未结 2 2034
慢半拍i
慢半拍i 2020-12-11 07:24

I am currently using the following VBS script to send an email and it works fine, however the image is sent as an attachment. I would instead like to embed the image into t

相关标签:
2条回答
  • 2020-12-11 08:19

    use the code below

    Const PR_ATTACH_MIME_TAG = "http://schemas.microsoft.com/mapi/proptag/0x370E001E"
    Const PR_ATTACH_CONTENT_ID = "http://schemas.microsoft.com/mapi/proptag/0x3712001E"
    Const PR_ATTACHMENT_HIDDEN = "http://schemas.microsoft.com/mapi/proptag/0x7FFE000B"
    
    
    Sub testing2()
    Dim ToAddress
    Dim FromAddress
    Dim MessageSubject
    Dim MyTime
    Dim MessageBody
    Dim MessageAttachment
    Dim ol, ns, newMail
    Dim realAttachment
    MyTime = Now
    
    ToAddress = "testing@address.com"
    MessageSubject = "Auto Stats " & MyTime
    MessageBody = "Stats Attached" & vbCrLf & "Produced at " & MyTime
    MessageAttachment = "C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg"
    Set ns = Outlook.GetNamespace("MAPI")
    Set newMail = Outlook.CreateItem(olMailItem)
    newMail.Subject = MessageSubject
    newMail.Body = MessageBody
    newMail.Recipients.Add (ToAddress)
    Set realAttachment = newMail.Attachments.Add(MessageAttachment)
    Set oPA = realAttachment.PropertyAccessor
    oPA.SetProperty PR_ATTACH_MIME_TAG, "image/jpeg"
    oPA.SetProperty PR_ATTACH_CONTENT_ID, "myident" 'change myident for another other image
    newMail.HTMLBody = newMail.HTMLBody & "<IMG align=baseline border=0 hspace=0 src=cid:myident>" 'need to match the "myident" above
    newMail.Send
    End Sub
    

    Hope it helps

    0 讨论(0)
  • 2020-12-11 08:22

    I tested this in outlook 2003 and 2016

        'I do have a solution, and that is to convert the Body to HTML
    Dim ToAddress
    Dim FromAddress
    Dim MessageSubject
    Dim MyTime
    Dim MessageBody
    Dim MessageAttachment
    Dim ol, ns, newMail
    MyTime = Now
    
    ToAddress = "email@address.com"
    MessageSubject = "Auto Stats " & MyTime
    ' The trick is to convert all the message body into HTML
    ' Don't mix script text and HTML. Then simply add an HTML image reference.
    ' Remember if the recipient can't get to the image
    ' it won't appear in the email body, and will be blank. So don't use a local image. 
    ' Use an recipient reachable image.
    MessageBody = "<html>Stats Attached" & "<p>Produced at  " & MyTime & _
          "<p><img src=""http://somedomain.com/.../stats.png""></html><br>"
    'MessageAttachment = "P:\stats.png" ! Now Uneccessary 
    Set ol = CreateObject("Outlook.Application")
    Set ns = ol.getNamespace("MAPI")
    Set newMail = ol.CreateItem(olMailItem)
    newMail.Subject = MessageSubject
    newMail.htmlBody = MessageBody 'Changed the newmMail.Body to newMail.htmlBody
    newMail.RecipIents.Add(ToAddress)
    'newMail.Attachments.Add(MessageAttachment) !This was removed because it would just appear as email attachment
    newMail.Display
    
    0 讨论(0)
提交回复
热议问题