Home Getting the incoming email in outlook via VBA
Reply: 0

Getting the incoming email in outlook via VBA

user2471 Published in June 21, 2018, 8:42 am

I am trying to save incoming messages via outlook to my local file system. The code I have so far is:

Sub save_to_dir(Item As Outlook.MailItem)
 'the mail we want to process
Dim objItem As Outlook.MailItem
 'question for saving, use subject to save
Dim strPrompt As String, strname As String
 'variables for the replacement of illegal characters
Dim sreplace As String, mychar As Variant, strdate As String
 'put active mail in this object holder 

Set objItem = Outlook.ActiveExplorer.Selection.Item(1)

 'check if it's an email ... need to take a closer look cause
 'gives an error when something else (contact, task) is selected
 'because objItem is defined as a mailitem and code errors out
 'saving does work, if you take care that a mailitem is selected
 'before executing this code
 mypath = "c:\temp\outlook\"
If objItem.Class = olMail Then
    ' check on subject
    If objItem.Subject <> vbNullString Then
        strname = objItem.Subject
        strname = "No_Subject"
    End If
    strdate = objItem.ReceivedTime
     'define the character that will replace illegal characters
    sreplace = "_"
     'create an array to loop through illegal characters (saves lines)
    For Each mychar In Array("/", "\", ":", "?", Chr(34), "<", ">", "¦")
         'do the replacement for each character that's illegal
        strname = Replace(strname, mychar, sreplace)
        strdate = Replace(strdate, mychar, sreplace)
    Next mychar
     'Prompt the user for confirmation
    'strPrompt = "Are you sure you want to save the item?"
    'If MsgBox(strPrompt, vbYesNo + vbQuestion) = vbYes Then
        objItem.SaveAs mypath & strname & "--" & strdate & ".msg", olMSG
    ' Else
    '    MsgBox "You chose not to save."
    'End If
End If
End Sub

Problem with this code is that when you have an item selected in your outlook on the moment the email comes in it uses the selected item in stead of the incoming mail

How can i get the incoming email?



After debugging this line Set objItem = Outlook.ActiveExplorer.Selection.Item(1)

I found out that Outlook.ActiveExplorer.Selection.Item(1) has got the current email in it, but when i look into objItem after it executed the line the value of objItem is the email which is currently selected in outlook and not the incoming email.

Any idea's?

You need to login account before you can post.

About| Privacy statement| Terms of Service| Advertising| Contact us| Help| Sitemap|
Processed in 0.613155 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO