Solved

Outlook automation

Posted on 2014-01-16
6
371 Views
Last Modified: 2014-01-26
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
Comment
Question by:COACHMAN99
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
6 Comments
 
LVL 74

Expert Comment

by:Jeffrey Coachman
ID: 39787263
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
 
LVL 7

Author Comment

by:COACHMAN99
ID: 39787380
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
 
LVL 74

Expert Comment

by:Jeffrey Coachman
ID: 39787761
oK, so lets wait for an Outlook expert to chime in.

you can also add the Exchange zone to this Q.
0
Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

 
LVL 7

Accepted Solution

by:
COACHMAN99 earned 0 total points
ID: 39797948
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
 
LVL 74

Expert Comment

by:Jeffrey Coachman
ID: 39798501
OK,

Great,

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

;-)

JeffCoachman
0
 
LVL 7

Author Closing Comment

by:COACHMAN99
ID: 39809852
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

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

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

Access developers frequently have requirements to interact with Excel (import from or output to) in their applications.  You might be able to accomplish this with the TransferSpreadsheet and OutputTo methods, but in this series of articles I will di…
This article will help to fix the below error for MS Exchange server 2010 I. Out Of office not working II. Certificate error "name on the security certificate is invalid or does not match the name of the site" III. Make Internal URLs and External…
To add imagery to an HTML email signature, you have two options available to you. You can either add a logo/image by embedding it directly into the signature or hosting it externally and linking to it. The vast majority of email clients display l…
This is my first video review of Microsoft Bookings, I will be doing a part two with a bit more information, but wanted to get this out to you folks.

729 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