Solved

Outlook rule does not always work

Posted on 2013-01-05
2
444 Views
Last Modified: 2013-01-10
I made a code for Outlook 2010 with an Exchange Server at work. I put the script in ThisOutlookSession.
The rule do the following:
Check incoming mail, from address1 or address2, with the words 'word1' or 'word2' in the topic or text, with an attachment, only at this computer, move the email to a subfolder, run script Projekt1.ThisOutlookSession.SaveAllAttachments and mark it as read.

The code save the attachment as a picture, with the name depending on which time it arrive to Outlook. Then it is printed with irfanview.
The code is here below.

The rule and code works fine most of the time, but sometimes it fails. This happen mostly in the middle of the night, so it is hard to know what happen. When it fails it becomes deactivated.

What can be wrong?


Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub SaveAllAttachments(objitem As MailItem)

    Dim objAttachments As Outlook.Attachments
   Dim strName, strLocation As String
   Dim dblCount, dblLoop As Double

    strLocation = "N:\KARTOR\ANALYS\" ' Ändra till analyskartorkatalogen
   On Error GoTo ExitSub
    If objitem.Class = olMail Then
       Set objAttachments = objitem.Attachments
       dblCount = objAttachments.Count
       If dblCount <= 0 Then
         GoTo 100
       End If

       For dblLoop = 1 To dblCount
                 ' strID = Format(Time, "hh")           'Get the current Time in hours
                   strID = Format(objitem.SentOn, "hh")  'Get the time the mail was sent on
                   'strID = strID & " at " & Format(Time, "hh`mm AMPM") 'Append the Time
                   If strID > 0 And strID <= 6 Then
                     filnamn = "00"
                   End If
                   If strID > 6 And strID <= 12 Then
                     filnamn = "06"
                   End If
                   If strID > 12 And strID <= 18 Then
                     filnamn = "12"
                   End If
                   If strID > 18 Or strID = 0 Then
                     filnamn = "18"
                   End If
 
                  strName = objAttachments.Item(dblLoop).FileName 'Get attachment name
                   strExt = Right$(strName, 4)                     'Store file Extension
                   strName = Left$(strName, Len(strName) - 4)      'Remove file Extension
                   ' strName = strName & strID & strExt              'Reattach Extension
                   ' Tell the script where to save it and
                   ' what to call it
                   strName = strLocation & filnamn & ".jpg"                'Put it all together

                    ' Save the attachment as a file.
                   objAttachments.Item(dblLoop).SaveAsFile strName

                    strCommand = "C:\program files\irfanview\i_view32.exe " & strName & " /print=\\lpcluster4\printer-st1"

                    Dim myApp As Double
                   myApp = Shell(strCommand, vbHide)
        Next dblLoop
       ' objitem.Delete
   End If

100
ExitSub:
   Set objAttachments = Nothing
   Set objOutlook = Nothing
   End Sub
0
Comment
Question by:anderswen
2 Comments
 
LVL 18

Accepted Solution

by:
Andrej Pirman earned 500 total points
ID: 38746657
Don't know about the code, but if it fails usually in the middle of the night, it might be that some of used mechanisms are locked due to BACKUP.

I'd put some debug logging into the script:
- upon execution, write TIME into log file
- then each step, write a line to log file

When next time it will wail, you'll have time and steps in log. Examine Windows Event logs (application and system events) and compare times of failure. You might conclude something useful out of it.
0
 

Author Closing Comment

by:anderswen
ID: 38764180
Thanks, I have done this, and I have also changed the directory it is saved to from the network server to the local disk, and it is transferred later on by a scheduled task to the network server. It has not gone wrong so far. I have also put on logging on Outlook so I am eager to see what can be wrong.
0

Featured Post

VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Follow this checklist to learn more about the 15 things you should never include in an email signature from personal quotes, animated gifs and out-of-date marketing content.
Are you unable to connect or configure Hotmail email account in Microsoft Outlook 2010, 2007? Or Outlook.com emails are not downloading to Outlook? Lets’ see the problem and resolve Outlook Connector error syncing folder hierarchy (0x8004102A).
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …
Many of my clients call in with monstrous Gmail overloading issues with Outlook. A quick tip is to turn off the All Mail and Important folders from synching. Here is a quick video I made to show you how to turn off these and other folders in Gmail s…

773 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question