Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 450
  • Last Modified:

Outlook rule does not always work

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
anderswen
Asked:
anderswen
1 Solution
 
Andrej PirmanCommented:
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
 
anderswenAuthor Commented:
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

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now