Go Premium for a chance to win a PS4. Enter to Win

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

Outlook automation

Hi All,
I usually use redemption for this purpose but in this case it isn't an option.
I'm using late binding for compatibility.
When the code below runs on a non-Exchange platform it works great. It fails on the last line of the code below when using Exchange. (trying to add a recipient prior to resolving (for the purpose of add CCs))
The recipient is unknown to the system at this stage (not in contacts etc)
The error is Error 287, Application-defined or object-defined error
Does one use different libraries/code when using Outlook/Exchange?
thanks

Function SendEmail(RecipEmail As String, Subject As String, BBody As String, cc1 As String) As Boolean
  On Error GoTo err_SendEmail
  Dim olApp As Object
  Dim olNS As Object
  Dim olRecip As Object
  Dim oItem As Object
'  Set olApp = CreateObject("Outlook.Application")
'  Set olNS = CreateObject("Outlook.Namespace")
  Dim tInterval As Integer, signature As String
  Dim i, MyFile, MyFile2, SentItemsCounter, CoverLetter, tmpEmail, ErrorLine As Long
  If RecipEmail <> "" Then
    SentItemsCounter = 0
    SendEmail = False
    Set olApp = CreateObject("Outlook.Application")
    Set olNS = olApp.GetNamespace("MAPI")
    Set olRecip = olApp.CreateItem(olRecipient)
    olNS.Logon
    Set oItem = olApp.CreateItem(0) 'Create a new message
    Set olRecip = oItem.Recipients.Add(RecipEmail)
0
COACHMAN99
Asked:
COACHMAN99
  • 3
  • 3
1 Solution
 
Jeffrey CoachmanCommented:
Not really an answer but perhaps it will help:

When you do this:
Dim i, MyFile, MyFile2, SentItemsCounter, CoverLetter, tmpEmail, ErrorLine As Long
...only "ErrorLine " will actually be declared as a Long datatype, ...all of the preceding variable will be "Variant" datatypes

As variants the code takes longer to "Resolve" these variables, ...possibly causing other issues as well.

See here: http://www.cpearson.com/excel/DeclaringVariables.aspx

JeffCoachman
0
 
COACHMAN99Author Commented:
Thanks Jeff. (any feedback/comment on this is welcome). In this case most of those vars aren't used (copied code form elsewhere) but I fixed it anyway (and no improvement :-().
The fact that this code works 100% of the time in a situation where Exchange isn't involved, and fails 100% of the time when it is is a pointer to the problem.
0
 
Jeffrey CoachmanCommented:
oK, so lets wait for an Outlook expert to chime in.

you can also add the Exchange zone to this Q.
0
Get your Conversational Ransomware Defense e‑book

This e-book gives you an insight into the ransomware threat and reviews the fundamentals of top-notch ransomware preparedness and recovery. To help you protect yourself and your organization. The initial infection may be inevitable, so the best protection is to be fully prepared.

 
COACHMAN99Author Commented:
Apparently (when the Outlook security options (Trust Center Programmatic Access) are set, and a valid anti-virus application exists) the standard security messages are NOT displayed but parts of the object model are disabled. e.g. the following code fails on 'signature = .Body', not '.to'. If the offending line is removed all is well.

Set olApp = CreateObject("Outlook.Application")
   Set oItem = olApp.CreateItem(olMailItem)
   With oItem
       .To = RecipEmail
       .Display   'to get signature for later use
       signature = .Body
       .Subject = Subject
       .Body = BBody & vbCr & vbCr & signature
   End With
0
 
Jeffrey CoachmanCommented:
OK,

Great,

you should now accept your own post as the solution so others can benefit.

;-)

JeffCoachman
0
 
COACHMAN99Author Commented:
Apparently (when the Outlook security options (Trust Center Programmatic Access) are set, and a valid anti-virus application exists) the standard security messages are NOT displayed but parts of the object model are disabled. e.g. the following code fails on 'signature = .Body', not '.to'. If the offending line is removed all is well.
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

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