DonationCoder.com forum
 
Read-only archive. This is a static copy of the DonationCoder.com forum. Reading and searching work as before; logging in, posting and private messages do not.
Archive of 2026-10-21 · About this archive · Main site

Author Topic: .Intercepting/rewriting Outlook HTML emails automagically  (Read 11,822 times)

CodeTRUCKER

  • Bush Flying... where I'd rather be.
  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,086
    • Participated in NANY Challenge Once
    • Military Service Badge - US Navy
.Intercepting/rewriting Outlook HTML emails automagically
« on: February 03, 2008, 07:08 AM »
Below is some code I scavenged from the Internet for a macro that will take attached images in Outlook 2002 and display them in a window. 

Does anyone know how to intercept an email w/ pix attchments in a locale Outlook client and "rewrite" the HTML so the pix display in the body automagically?

I have tried some experiments with the code below, but I don't know how to intercept the email before it is displayed in my client.

Is this possible?


Thanks! :)



Code: (vb)

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


Sub view_attachments()
'***************************************************************
' ver. 1/30/04
'  - Select one or multiple emails.
'  - Copies files to 'Temporary Internet Files\view_attachments'
'    (previously copied files are deleted each time it's run).
'  - Only image files are displayed (no others are executed).
'  - Right-click images to 'Save As', 'Email', 'Print', etc.
'  - Hover over image to see original size & scaled size.
'  - Clicking each image will toggle between original size
'    & browser width (unless original size is smaller).
'  - To scale all images to browser width, resize the browser,
'    right-click on background & choose 'Refresh'.
'***************************************************************
On Error Resume Next


    Dim oOL As Outlook.Application
    Dim oSelection As Outlook.Selection


    Set oOL = New Outlook.Application
    Set oSelection = oOL.ActiveExplorer.Selection
    Set objShell = CreateObject("WScript.Shell")
    Set fs = CreateObject("Scripting.FileSystemObject")


    vTempInt = objShell.RegRead("HKCU\software\microsoft\" _
      & "Windows\CurrentVersion\Explorer\Shell Folders\Cache")
    vPath = vTempInt & "\view_attachments\"


    If fs.FolderExists(vPath) Then
        fs.DeleteFile (vPath & "*.*")
    Else
        fs.CreateFolder vPath
    End If


    vBkgrColor = "000000"
    vFontColor = "FFFFFF"
    vHTMLBody = "<HTML><title>View Email Attachments</title>" _
      & "<body bgcolor=#" & vBkgrColor & " link=#" & vFontColor _
      & " alink=#" & vFontColor & " vlink=#" & vFontColor _
      & "><font face=Arial size=3 color=#" & vFontColor & ">"


    vEmailNum = 0
    For Each obj In oSelection
        vEmailNum = vEmailNum + 10
        vSubject = "Attachments from: <a href=""Outlook:" _
          & obj.EntryID & """><b>" & obj.Subject & "</b></a><br>"
        vHTMLBody = vHTMLBody & vSubject
        vAttachNum = vEmailNum
        For Each Attachment In obj.Attachments
            vAttachNum = vAttachNum + 1
            vImg = "document.img" & vAttachNum
            vWidth = "document.body.clientWidth - 20"
            Attachment.SaveAsFile (vPath & Attachment.FileName)
            vHTMLBody = vHTMLBody _
              & "<b>" & Attachment.FileName & "</b><br>" _
              & "<a href=""javascript:fWidth(" & vImg & ");"">" _
              & "<center><IMG name=""img" & vAttachNum & """ alt="""" hspace=0 " _
              & "src=""" & vPath & Attachment.FileName & """ align=baseline " _
              & "border=0 " & "onload=""vOrig=String(" & vImg & ".width)" _
              & "+ ' x ' + String(" & vImg & ".height);vRatio=(" & vWidth _
              & ")/" & vImg & ".width;" & vImg & ".alt='Original Size: ' + " _
              & "vOrig + '\n  Scaled Size: ';if(" & vImg & ".width <=" _
              & vWidth & "){" & vImg & ".alt=" & vImg & ".alt + vOrig;}" _
              & "else{" & vImg & ".alt=" & vImg & ".alt + String(" & vWidth _
              & ")+ ' x ' + String(Math.round(vRatio *" & vImg & ".height));}" _
              & "if (" & vImg & ".width >" & vWidth & "){" & vImg & ".width = " _
              & vWidth & ";}""></center></a><br><br><br>"
        Next
        vHTMLBody = vHTMLBody & "</a><br><br>"
    Next


    If Not vImg = "" Then
        vHTMLBody = vHTMLBody & "<script>function fWidth (vImg){" _
          & "vCRLF=vImg.alt.indexOf('\n');vOrgWidth=vImg.alt.substring" _
          & "(vImg.alt.indexOf(':')+2, vImg.alt.indexOf('x')-1);" _
          & "if(vImg.width == " & vWidth & "|| vOrgWidth <= " & vWidth _
          & "){vImg.width=vOrgWidth;vImg.alt=vImg.alt.substring(0,vCRLF)" _
          & "+ '\n  Scaled Size: '+ vImg.alt.substring(vImg.alt." _
          & "indexOf(':')+2,vCRLF);}else{vImg.width=" & vWidth & ";" _
          & "vImg.alt=vImg.alt.substring(0,vCRLF) + '\n  Scaled Size: '" _
          & "+ String(" & vWidth & ")+ ' x ' + String(vImg.height);}}</script>"
    End If


    vHTMLBody = vHTMLBody & "</font></body></html>"


    Set ie = CreateObject("internetexplorer.application")
    With ie
        .toolbar = 0
        .menubar = 0
        .statusbar = 0
        .Left = 100
        .Top = 50
        .Height = 750
        .Width = 1000
        .navigate "about:blank"
        .document.Open
        .document.Write vHTMLBody
        .document.Close
        .Visible = True
    End With


    vTimer = 0
    Do Until ie.readyState = 4 Or vTimer = 10000
        Sleep 10
        vTimer = vTimer + 10
    Loop


    Set ie = Nothing
    Set fs = Nothing
    Set objShell = Nothing
    Set oSelection = Nothing
    Set oOL = Nothing
End Sub
DISCLAIMER - I have made and make many threads for questions and even project posts across the Internet. Unfortunately, many are in limbo because I cannot remember where they are at. If anyone knows of an open thread or an unanswered inquiry, please PM me. Thank you.
   
Notice: Unless stated otherwise, I receive no compensation for anything I post here.
« Last Edit: February 08, 2008, 12:43 AM by CodeTRUCKER »

tinjaw

  • I'm so glad breakbeat techno isn't an illegal drug
  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,927
    • Participated in NANY Challenge Twice
    • Coding Snacks
    • Military Service Badge - US Army
    • Linux User
Re: Intercepting/rewriting Outlook HTML emails automagically
« Reply #1 on: February 03, 2008, 12:18 PM »
codeTRUCKER,

Off the top of my head I can think of two ways to do that.

1) Put something in the middle of Outlook and the mail server. Just like a proxy. That proxy would introspect all incoming emails (which are just strings of ASCII text - binaries are MIME encoded) and rewrite the emails as desired. You could use the tool of you choice to create this proxy.

2) Since you are using Outlook, you can use VBA (or any scripting language compatible with the scripting host, like Jscript) and interact with Outlook. You basically make an add-on for Outlook.

BigJim

  • I have seen the light!
  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 178
Re: Intercepting/rewriting Outlook HTML emails automagically
« Reply #2 on: February 05, 2008, 06:06 AM »
2) Since you are using Outlook, you can use VBA (or any scripting language compatible with the scripting host, like Jscript) and interact with Outlook.

I sure wish somebody would do that. It's so annoying that Outlook handles attached images so poorly. M/$ says it's because of security. Humbug! From time to time I go hunting for a solution and am again amazed that there seem to be few or no solutions available.

I had an application a while back (can't recall the name just now) which worked OK. Would have gladly coughed up $10 for it but all the links to buy it were dead. Then the trial expired and it gaged.

The app didn't display the images in the message but when you clicked on any of several attached images and your viewer launched you could then page through all of them instead of having to go back to the message and open each one individually.
TruckerJim says "You can go down a hill too slow a thousand times. But too fast only once."

CodeTRUCKER

  • Bush Flying... where I'd rather be.
  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,086
    • Participated in NANY Challenge Once
    • Military Service Badge - US Navy
Re: Intercepting/rewriting Outlook HTML emails automagically
« Reply #3 on: February 07, 2008, 07:56 AM »
2) Since you are using Outlook, you can use VBA (or any scripting language compatible with the scripting host, like Jscript) and interact with Outlook.

I sure wish somebody would do that. It's so annoying that Outlook handles attached images so poorly. M/$ says it's because of security. Humbug! From time to time I go hunting for a solution and am again amazed that there seem to be few or no solutions available.

Hi Jim,

Me too!  I am looking into this as I am not satisfied with the way OE handles it.  I know "what" to do to make it work, but I have to learn "how" to program it (read: learn syntax). 

Quote
I had an application a while back (can't recall the name just now) which worked OK. Would have gladly coughed up $10 for it but all the links to buy it were dead. Then the trial expired and it gaged.

The app didn't display the images in the message but when you clicked on any of several attached images and your viewer launched you could then page through all of them instead of having to go back to the message and open each one individually.

The macro I posted in the first post above will provide the function you have described.  :) 
After the macro has been saved, I reccomend creating a button to put on the toolbar in OE.  When you have picture attachments in a mail, just click run the macro and voila!  A simple browser will open with all the pictures and if you select multiple mails in the message list, it will display all the pictures in all the mails in one window.  Scroll down to see all of them.

Hope this helps.

Fair winds!

DISCLAIMER - I have made and make many threads for questions and even project posts across the Internet. Unfortunately, many are in limbo because I cannot remember where they are at. If anyone knows of an open thread or an unanswered inquiry, please PM me. Thank you.
   
Notice: Unless stated otherwise, I receive no compensation for anything I post here.

BigJim

  • I have seen the light!
  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 178
Re: Intercepting/rewriting Outlook HTML emails automagically
« Reply #4 on: February 07, 2008, 05:12 PM »
Sounds interesting. And thanks!

This is embarrassingly lame but when I try to copy/paste your script into the VB editor it keeps throwing in CR/LF's and it won't run. Needless to say, an avid participant I am. But a coder I'm not!

Help

[attach]
TruckerJim says "You can go down a hill too slow a thousand times. But too fast only once."

CodeTRUCKER

  • Bush Flying... where I'd rather be.
  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,086
    • Participated in NANY Challenge Once
    • Military Service Badge - US Navy
Re: Intercepting/rewriting Outlook HTML emails automagically
« Reply #5 on: February 07, 2008, 05:30 PM »
Sounds interesting. And thanks!

... when I try to copy/paste your script into the VB editor it keeps throwing in CR/LF's and it won't run. Needless to say, an avid participant I am. But a coder I'm not!

Jim, You may not be a coder, but you are no novice to computers! :)  I chose to make the directions pretty granular so even the least experienced should be able to make this work.  In time, I should be able to automate the following, but for now it as to be manual.  Let us know how it goes.

Ok, follow these directions and it should get you going... 

The first thing we need to do is open the macro editor...

  • In OL, click on the menubar... Tools >> Macro >> Macros.
  • When the window opens type "ThumbViewer" in the "Macro Name" box and click the "Create" button.  This will open a "Visual Basic for Outlook" (VB) IDE.  Leave this open.

Second, we need to open the attached text file which has the syntax we need and send it to the clipboard....

  • Now, come back to the attached text file on this post and open it.  It is just text and will open fairly instantaneous.  You can save it if you want to.  Make sure it only opens in Not Pad or other text-only editor.  It will be unusable if it opens in MS Word or other word processor because there are hidden formatting characters that will be copied which will corrupt the syntax.
  • Click anywhere on the text.
  • Press "CTRL + A" to select the entire text.
  • Press "CTRL + C" to copy the text to the clipboard.

Now we have the code in our hands we need to put it into the IDE and save the project

  • Switch back to the IDE window.
  • Click anywhere on the text.
  • Press "CTRL + A" to select the entire text.
  • Hit the "Delete" key to clear out all contents.
  • Press "CTRL + V" to paste the syntax text from the clipboard into the IDE.
  • Save and close the IDE.

Now that we are back in OL and if everything worked OK you should be able to select any email(s) with a picture attachment(s) and execute the "ThumbViewer" macro.

  • In the list of emails, select one or multiple emails.
  • In OL, click on the menubar... Tools >> Macro >> Macros.
  • When the window opens, you should see "ThumbViewer" in the "Macro Name" box.
  • Click the "Run" button.  This will open a simple browser with all of the picture attachments displayed in "single-file."  You will have to scroll down to see the rest of your pictures.



DISCLAIMER - I have made and make many threads for questions and even project posts across the Internet. Unfortunately, many are in limbo because I cannot remember where they are at. If anyone knows of an open thread or an unanswered inquiry, please PM me. Thank you.
   
Notice: Unless stated otherwise, I receive no compensation for anything I post here.
« Last Edit: February 07, 2008, 10:28 PM by CodeTRUCKER »

BigJim

  • I have seen the light!
  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 178
Re: Intercepting/rewriting Outlook HTML emails automagically
« Reply #6 on: February 07, 2008, 05:49 PM »
It's choking on the quotes (") in the first column. If I remove the first one it chokes on the ampersand (&).

Clearly, I don't know what I'm doing.  :-[
TruckerJim says "You can go down a hill too slow a thousand times. But too fast only once."

CodeTRUCKER

  • Bush Flying... where I'd rather be.
  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,086
    • Participated in NANY Challenge Once
    • Military Service Badge - US Navy
Re: Intercepting/rewriting Outlook HTML emails automagically
« Reply #7 on: February 07, 2008, 06:25 PM »
It's choking on the quotes (") in the first column. If I remove the first one it chokes on the ampersand (&).

Clearly, I don't know what I'm doing.  :-[

Not our doing... the SMF software is wrapping the lines and busting the syntax.  I will make a text file (no formatting) and attach it to the above post in just a minute.
DISCLAIMER - I have made and make many threads for questions and even project posts across the Internet. Unfortunately, many are in limbo because I cannot remember where they are at. If anyone knows of an open thread or an unanswered inquiry, please PM me. Thank you.
   
Notice: Unless stated otherwise, I receive no compensation for anything I post here.

BigJim

  • I have seen the light!
  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 178
Re: Intercepting/rewriting Outlook HTML emails automagically
« Reply #8 on: February 07, 2008, 06:59 PM »
You're a prince. I don't care what they say about truck drivers!  :lol:
TruckerJim says "You can go down a hill too slow a thousand times. But too fast only once."

CodeTRUCKER

  • Bush Flying... where I'd rather be.
  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,086
    • Participated in NANY Challenge Once
    • Military Service Badge - US Navy
Re: Intercepting/rewriting Outlook HTML emails automagically
« Reply #9 on: February 07, 2008, 10:32 PM »
You're a prince. I don't care what they say about truck drivers!   :lol:

Thanks for the flowers! :) 

Try these instructions above
DISCLAIMER - I have made and make many threads for questions and even project posts across the Internet. Unfortunately, many are in limbo because I cannot remember where they are at. If anyone knows of an open thread or an unanswered inquiry, please PM me. Thank you.
   
Notice: Unless stated otherwise, I receive no compensation for anything I post here.

BigJim

  • I have seen the light!
  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 178
Re: .Intercepting/rewriting Outlook HTML emails automagically
« Reply #10 on: February 08, 2008, 01:01 AM »
Absolutely first class! Works a treat. Thanks driver!! That little ditty is going to avert untold frustration. 

(Just for the record, I had a handle on all the step-by-step. Just couldn't stop to try to figure out the problem with the code. But your excellent guide will make it easy and a pleasure to share your script with other frustrated Outlook users.)
TruckerJim says "You can go down a hill too slow a thousand times. But too fast only once."

CodeTRUCKER

  • Bush Flying... where I'd rather be.
  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,086
    • Participated in NANY Challenge Once
    • Military Service Badge - US Navy
Re: .Intercepting/rewriting Outlook HTML emails automagically
« Reply #11 on: February 08, 2008, 01:07 AM »
Absolutely first class! Works a treat. Thanks driver!! That little ditty is going to avert untold frustration. 

(Just for the record, I had a handle on all the step-by-step. Just couldn't stop to try to figure out the problem with the code. But your excellent guide will make it easy and a pleasure to share your script with other frustrated Outlook users.)

You're welcome!  Like I said... you are no computer novice!
DISCLAIMER - I have made and make many threads for questions and even project posts across the Internet. Unfortunately, many are in limbo because I cannot remember where they are at. If anyone knows of an open thread or an unanswered inquiry, please PM me. Thank you.
   
Notice: Unless stated otherwise, I receive no compensation for anything I post here.

Original address: https://www.donationcoder.com/forum/index.php?topic=12140.0