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)
LVL 7
COACHMAN99Asked:
Who is Participating?
 
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 CoachmanMIS LiasonCommented:
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
Cloud Class® Course: MCSA MCSE Windows Server 2012

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

 
Jeffrey CoachmanMIS LiasonCommented:
oK, so lets wait for an Outlook expert to chime in.

you can also add the Exchange zone to this Q.
0
 
Jeffrey CoachmanMIS LiasonCommented:
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.