Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
Keywords: MAPI Outlook Security OLE Outlook.Application
I have perused the Microsoft knowledgebase and the Security patch is definitely the culprit (by design), but I could find no type of way to get around this. Can anyone help me out with some information on how it would be possible to make it work with the Security patch on and not get these messages, or at least point me in the right direction to look?
Alternatively, you might be able to work around the security dialog using one of the following options:
OPTION 1 - Use Outlook Redemption.
Instead of using the MAPI extender functions you can communicate with Outlook, via OLE and the Redemption COM object. Outlook Redemption works around limitations imposed by the Outlook Security Patch. With Outlook Redemption you can make your code run unaffected by the Security Patch.
http://www.dimastr.com/redemption/
*If* you have Redemption registered on the system, then it should be is accessible to WinBatch. See link above for details.
Sample code:
;!!!UNDEBUGGED!!! objSafeItem = ObjectOpen("Redemption.SafeMailItem") ;Create an instance of Redemption.SafeMailItem objOutlook=ObjectOpen("Outlook.Application") oItem = objOutlook.CreateItem(0) ;Create a new message objSafeItem.Item = oItem ;set Item property ;add recipients objRecip = objSafeItem.Recipients To="someone@youknowwhere.org" ;for each address add a recipient cnt = ItemCount(to,";") For x = 1 to cnt recip = ItemExtract(x,to,";") objRecip.Add(recip) Next objRecip.ResolveAll objSafeItem.Body = "Hello...." objSafeItem.Subject = "Howdy" objSafeItem.Send
OPTION 2 - Obtain your own security certificate
OPTION 3 - Launch secondary script
Launch a secondary script which waits for the window to exist, then use the control manager extender
functions and a SendkeysTo command to acknowledge the dialog.
Note:
You will receive the confirmation dialog box when your script tries to programmatically access the following features of the Outlook object model: The AddressEntries collection or any AddressEntry object. The Recipients collection or any Recipient object. The following properties of a ContactItem object: Email1.Address Email1.AddressType Email1.DisplayName Email1.EntryID Email2.Address Email2.AddressType Email2.DisplayName Email2.EntryID Email3.Address Email3.AddressType Email3.DisplayName Email3.EntryID NetMeetingAlias ReferredBy The following properties of a MailItem object: SentOnBehalfOfName SenderName ReceivedByName ReceivedOnBehalfOfName ReplyRecipientNames To Cc Bcc The following properties of a AppointmentItem object: Organizer RequiredAttendees OptionalAttendees Resources NetMeetingOrganizerAlias The following properties of a TaskItem object: ContactNames Contacts Delegator Owner StatusUpdateRecipients StatusOnCompletionRecipients The GetMember method of a DistListItem object. The ContactNames property of a JournalItem object. The SenderName property of a MeetingItem object. The SenderName property of a PostItem object. The GetRecipientFromID property of a Namespace object. The Execute method of an Action object. The Formula property of a UserProperty object.
AddExtender("wwctl34i.dll")
olFolderInbox=6 ;constant DO NOT CHANGE
MSapp = ObjectOpen ("Outlook.Application")
objNameSpace = MSapp.GetNamespace("MAPI")
objFolder = objNameSpace.GetDefaultFolder(olFolderInbox); 'Access the Inbox
objFolder.Display
objcount=objFolder.Items
valcount=objcount.Count;checks number of messages in inbox!
For i = 1 to valcount
objItem=objFolder.Items(i) ;set current message
Body = objItem.Body
HTMLBody = objItem.HTMLBody
Subject = objItem.Subject
if i ==1 then Run("c:\temp\killsecurity.wbt","")
WHOTo = objItem.To
Message(WHOTo,StrCat(Subject,@crlf,@crlf,Body))
Next
ObjectClose(MSapp)
exit
; Add the control manager extender.
AddExtender("wwctl34i.dll")
totaltry = 5
try = 1
While 1
window1 = cWndByWndSpec("#32770","OUTLOOK",8,4775,4776,4512,4772,4769,4771,4773,4774)
if window1 == 0
timedelay(1)
try = try+1
if try > totaltry then break
continue
endif
winID = cWinIdConvert(window1)
ret = WinWaitExist(winID,3)
if ret
ControlHandle=cWndByID(window1,4774)
While !cEnableState(ControlHandle,-1)
TimeDelay(1)
Endwhile
ControlHandle=cWndByID(window1,4771)
cCheckBox(ControlHandle,1) ;Checks a checkbox
ControlHandle=cWndByID(window1,4774)
;cPostButton(ControlHandle);doesn'twork
;cClickButton(ControlHandle);doesn'twork
SendKeysTo( winID,"{Tab 2}{Enter}")
break
endif
Endwhile
exit
Here is some information Regarding the Outlook security update:
Simple MAPI Design Changes
---------------------------
When Outlook is installed on a computer as the default Simple MAPI client, Outlook processes requests that are made by using
Simple MAPI calls. Therefore, when you install the Outlook E-mail Security Update, changes are made to the way that Simple
MAPI calls are handled. By default, if you use many Simple MAPI functions you receive a warning message that says a program
is trying to either access recipient information or send mail on your behalf.
The following list describes how Outlook responds to Simple MAPI Extedner Functions.
Function Behavior if handled by Outlook ---------------------------------------------------------------- mFindNext OK mLogoff OK mLogon OK mReadNextMsg Prompt mSendMail Prompt mSendMailEx Prompt
Here are some links to Microsoft about the Outlook security update:
OL2000: Developer Information About the Outlook E-mail Security Update http://support.microsoft.com/support/kb/articles/Q262/7/01.ASP
OL2000: Administrator Information About the Outlook E-mail Security Update http://support.microsoft.com/support/kb/articles/Q263/2/97.ASP
Article ID: W15059
File Created: 2004:02:02:10:19:56
Last Updated: 2004:02:02:10:19:56