Ok, before I ask my question, I want to confirm that I've looked at the Microsoft Office Automation with Visual FoxPro book, searched for Outlook related messages on this list and spent more than I wanted to on the Internet and still haven't found a solution that I can use or modify to accomplish my goal. So, it's up to ProFox now.
Here's what I need to do: I have a system with Outlook 2010 running on it. I need to access the individual emails stored in multiple pst files with multiple sub-folders and extract the unique email addresses found on those emails. Ideally, I'd like to select the .PST file and have a program loop through all of the folders/subfolders, touch each email and extract any email addresses that contain a search string.
I can get an Outlook object active in VFP, but things get muddy after that.
Any ideas? Or is this even doable? I feel like the Fox is capable, but at the moment I'm not. J
Paul H. Tarver Tarver Program Consultants, Inc.
--- StripMime Report -- processed MIME parts --- multipart/alternative text/plain (text body -- kept) text/html ---
Hi Paul,
did you find these posts during your Internet searches?
Enumerating Outlook Folders into Treeview https://www.tek-tips.com/viewthread.cfm?qid=913176
Copying Emails into a VFP table from Outlook https://www.tek-tips.com/viewthread.cfm?qid=1784442
Probably you need to open and connect to your Outlook instance your variuos .PST files before running any code that searches for folders and emails.
HTH, Gianni
On Fri, 9 Aug 2024 12:17:51 -0500, "Paul H. Tarver" paul@tpcqpc.com wrote:
Ok, before I ask my question, I want to confirm that I've looked at the Microsoft Office Automation with Visual FoxPro book, searched for Outlook related messages on this list and spent more than I wanted to on the Internet and still haven't found a solution that I can use or modify to accomplish my goal. So, it's up to ProFox now.
Here's what I need to do: I have a system with Outlook 2010 running on it. I need to access the individual emails stored in multiple pst files with multiple sub-folders and extract the unique email addresses found on those emails. Ideally, I'd like to select the .PST file and have a program loop through all of the folders/subfolders, touch each email and extract any email addresses that contain a search string.
I can get an Outlook object active in VFP, but things get muddy after that.
Any ideas? Or is this even doable? I feel like the Fox is capable, but at the moment I'm not. J
Paul H. Tarver Tarver Program Consultants, Inc.
--- StripMime Report -- processed MIME parts --- multipart/alternative text/plain (text body -- kept) text/html ---
[excessive quoting removed by server]
SOLVED! The Fox comes through again!
Using the two links that Gianni provided, I started playing around with the code provided there and looking at what options were available to the various Outlook Objects and was able to put together a quick and dirty program that parses through all of the folders and PST files I have open in Outlook and extracts all of the sender email addresses from all of the emails I've received in the past 25 years. It also captures the name, the first date and last dates I received a message from every email address, so I can filter the list further. There are two cursors created during the process, the first captures the folders examined and the second captures all of the email addresses. I'll attach the program below just in case someone else needs something similar.
As I said it is about 95% complete meaning there are a few things I'd probably do differently, like force case to upper or lower to ensure no duplicates get through ( I fixed this while editing the results in Excel), there's no real user interface which would be nice, it would be very easy to create a drop-down to allow you to choose the starting folder/pst file to scan or to provide filter text to extract all of the messages for certain domain or something. I can think of lots to do with this, but it will have to wait until another day. In the meantime, if you can learn something from my rough coding or offer suggestions for improvements, go for it!
Thanks to those who responded to my request for help! You came through and here are the results of your help:
---------------------------------------------------------------- LOCAL loOutlook AS "Outlook.Application" LOCAL lnBegProcess, lnCounter, lnEndProcess, loFolders, loM, loNameSpace
CLEAR
m.lnBegProcess = SECONDS()
CREATE CURSOR FolderList (FolderName C(100) NOT NULL)
CREATE CURSOR EmailSenders (SentBy c(100) NOT NULL, Address C(100) NOT NULL, firstcontact T NOT NULL, lastcontact T NOT NULL) INDEX ON DELETED() TAG pkdel INDEX ON Address TAG Address
m.loOutlook = CREATEOBJECT("Outlook.Application") m.loNameSpace = m.loOutlook.GetNameSpace("MAPI") m.loFolders = m.loNameSpace.Folders
FOR m.lnCounter = 1 TO m.loFolders.COUNT
IF TYPE("loFolders.ITEM(lnCounter).Folders.count") = "N"
IF m.loFolders.ITEM(m.lnCounter).Folders.COUNT > 0
? m.lnCounter, m.loFolders.ITEM(m.lnCounter).NAME
INSERT INTO FolderList (FolderName) VALUES (TRANSFORM(m.lnCounter) + SPACE(1) + m.loFolders.ITEM(m.lnCounter).NAME)
FOR EACH m.loM IN m.loFolders.ITEM(m.lnCounter).Items
IF TYPE("lom.Sender.Address") = "C"
SEEK PADR(m.loM.Sender.Address, 100) ORDER TAG Address IN EmailSenders
IF !FOUND("EmailSenders")
INSERT INTO EmailSenders (SentBy, Address, firstcontact, lastcontact) VALUES (m.loM.Sender.Name, m.loM.Sender.Address, m.loM.ReceivedTime, m.loM.ReceivedTime)
ELSE
IF m.loM.ReceivedTime > EmailSenders.lastcontact
REPLACE EmailSenders.lastcontact WITH m.loM.ReceivedTime IN EmailSenders
ENDIF
ENDIF
ENDIF
ENDFOR
GetChildren(m.loFolders.ITEM(m.lnCounter).Folders, 1)
ENDIF
ENDIF
ENDFOR
m.loNameSpace = NULL m.loOutlook = NULL RELEASE m.loNameSpace RELEASE m.loOutlook
m.lnEndProcess = SECONDS() ? ? ? "Minutes To Process:", ROUND((m.lnEndProcess - m.lnBegProcess) / 60, 2)
PROCEDURE GetChildren LPARAMETERS toFolders, tnLevel
LOCAL lnCounter
FOR m.lnCounter = 1 TO m.toFolders.COUNT
IF TYPE("toFolders.ITEM(lnCounter).Folders.count") = "N"
? SPACE(m.tnLevel * 5), m.lnCounter, m.toFolders.ITEM(m.lnCounter).NAME INSERT INTO FolderList (FolderName) VALUES (SPACE(m.tnLevel * 5) + TRANSFORM(m.lnCounter) + SPACE(1) + m.toFolders.ITEM(m.lnCounter).NAME)
FOR EACH m.loM IN m.toFolders.ITEM(m.lnCounter).Items
IF TYPE("lom.Sender.Address") = "C"
SEEK PADR(m.loM.Sender.Address, 100) ORDER TAG Address IN EmailSenders
IF !FOUND("EmailSenders")
INSERT INTO EmailSenders (SentBy, Address, firstcontact, lastcontact) VALUES (m.loM.Sender.Name, m.loM.Sender.Address, m.loM.ReceivedTime, m.loM.ReceivedTime)
ELSE
IF m.loM.ReceivedTime > EmailSenders.lastcontact
REPLACE EmailSenders.lastcontact WITH m.loM.ReceivedTime IN EmailSenders
ENDIF
ENDIF
ENDIF
ENDFOR
IF m.toFolders.ITEM(m.lnCounter).Folders.COUNT > 0
GetChildren(m.toFolders.ITEM(m.lnCounter).Folders, m.tnLevel + 1)
ENDIF
ENDIF
ENDFOR
ENDPROC ----------------------------------------------------------------
Paul H. Tarver Tarver Program Consultants, Inc.
-----Original Message----- From: ProfoxTech [mailto:profoxtech-bounces@leafe.com] On Behalf Of Gianni Turri Sent: Sunday, August 11, 2024 7:06 AM To: profoxtech@leafe.com Subject: Re: Outlook Automation Help Needed
Hi Paul,
did you find these posts during your Internet searches?
Enumerating Outlook Folders into Treeview https://www.tek-tips.com/viewthread.cfm?qid=913176
Copying Emails into a VFP table from Outlook https://www.tek-tips.com/viewthread.cfm?qid=1784442
Probably you need to open and connect to your Outlook instance your variuos .PST files before running any code that searches for folders and emails.
HTH, Gianni
On Fri, 9 Aug 2024 12:17:51 -0500, "Paul H. Tarver" paul@tpcqpc.com wrote:
Ok, before I ask my question, I want to confirm that I've looked at the Microsoft Office Automation with Visual FoxPro book, searched for Outlook related messages on this list and spent more than I wanted to on the Internet and still haven't found a solution that I can use or modify to accomplish my goal. So, it's up to ProFox now.
Here's what I need to do: I have a system with Outlook 2010 running on it. I need to access the individual emails stored in multiple pst files with multiple sub-folders and extract the unique email addresses found on those emails. Ideally, I'd like to select the .PST file and have a program loop through all of the folders/subfolders, touch each email and extract any email addresses that contain a search string.
I can get an Outlook object active in VFP, but things get muddy after that.
Any ideas? Or is this even doable? I feel like the Fox is capable, but at the moment I'm not. J
Paul H. Tarver Tarver Program Consultants, Inc.
--- StripMime Report -- processed MIME parts --- multipart/alternative text/plain (text body -- kept) text/html ---
[excessive quoting removed by server]
UmVmYWN0b3IgdGltZS4g8J+YiiBZb3Ugc2hvdWxkIGJlIGFibGUgdG8gc3dhcCBvdXQgdGhvc2UgU0VFSyBmdW5jdGlvbiArICFGT1VORCgpIGNhbGxzIHdpdGggYSBzaW5nbGUgSU5ERVhTRUVLIGNhbGwuDQoNCi0tDQoNCnJrDQoNCkZyb206IFByb2ZveFRlY2ggPHByb2ZveHRlY2gtYm91bmNlc0BsZWFmZS5jb20+IE9uIEJlaGFsZiBPZiBQYXVsIEguIFRhcnZlcg0KU2VudDogTW9uZGF5LCBBdWd1c3QgMTIsIDIwMjQgNDozMCBQTQ0KVG86IHByb2ZveHRlY2hAbGVhZmUuY29tDQpTdWJqZWN0OiBSRTogT3V0bG9vayBBdXRvbWF0aW9uIEhlbHAgTmVlZGVkDQoNClNPTFZFRCEgVGhlIEZveCBjb21lcyB0aHJvdWdoIGFnYWluIQ0KDQpVc2luZyB0aGUgdHdvIGxpbmtzIHRoYXQgR2lhbm5pIHByb3ZpZGVkLCBJIHN0YXJ0ZWQgcGxheWluZyBhcm91bmQgd2l0aCB0aGUNCmNvZGUgcHJvdmlkZWQgdGhlcmUgYW5kIGxvb2tpbmcgYXQgd2hhdCBvcHRpb25zIHdlcmUgYXZhaWxhYmxlIHRvIHRoZQ0KdmFyaW91cyBPdXRsb29rIE9iamVjdHMgYW5kIHdhcyBhYmxlIHRvIHB1dCB0b2dldGhlciBhIHF1aWNrIGFuZCBkaXJ0eQ0KcHJvZ3JhbSB0aGF0IHBhcnNlcyB0aHJvdWdoIGFsbCBvZiB0aGUgZm9sZGVycyBhbmQgUFNUIGZpbGVzIEkgaGF2ZSBvcGVuIGluDQpPdXRsb29rIGFuZCBleHRyYWN0cyBhbGwgb2YgdGhlIHNlbmRlciBlbWFpbCBhZGRyZXNzZXMgZnJvbSBhbGwgb2YgdGhlDQplbWFpbHMgSSd2ZSByZWNlaXZlZCBpbiB0aGUgcGFzdCAyNSB5ZWFycy4gSXQgYWxzbyBjYXB0dXJlcyB0aGUgbmFtZSwgdGhlDQpmaXJzdCBkYXRlIGFuZCBsYXN0IGRhdGVzIEkgcmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gZXZlcnkgZW1haWwgYWRkcmVzcywgc28NCkkgY2FuIGZpbHRlciB0aGUgbGlzdCBmdXJ0aGVyLiBUaGVyZSBhcmUgdHdvIGN1cnNvcnMgY3JlYXRlZCBkdXJpbmcgdGhlDQpwcm9jZXNzLCB0aGUgZmlyc3QgY2FwdHVyZXMgdGhlIGZvbGRlcnMgZXhhbWluZWQgYW5kIHRoZSBzZWNvbmQgY2FwdHVyZXMgYWxsDQpvZiB0aGUgZW1haWwgYWRkcmVzc2VzLiBJJ2xsIGF0dGFjaCB0aGUgcHJvZ3JhbSBiZWxvdyBqdXN0IGluIGNhc2Ugc29tZW9uZQ0KZWxzZSBuZWVkcyBzb21ldGhpbmcgc2ltaWxhci4NCg0KQXMgSSBzYWlkIGl0IGlzIGFib3V0IDk1JSBjb21wbGV0ZSBtZWFuaW5nIHRoZXJlIGFyZSBhIGZldyB0aGluZ3MgSSdkDQpwcm9iYWJseSBkbyBkaWZmZXJlbnRseSwgbGlrZSBmb3JjZSBjYXNlIHRvIHVwcGVyIG9yIGxvd2VyIHRvIGVuc3VyZSBubw0KZHVwbGljYXRlcyBnZXQgdGhyb3VnaCAoIEkgZml4ZWQgdGhpcyB3aGlsZSBlZGl0aW5nIHRoZSByZXN1bHRzIGluIEV4Y2VsKSwNCnRoZXJlJ3Mgbm8gcmVhbCB1c2VyIGludGVyZmFjZSB3aGljaCB3b3VsZCBiZSBuaWNlLCBpdCB3b3VsZCBiZSB2ZXJ5IGVhc3kgdG8NCmNyZWF0ZSBhIGRyb3AtZG93biB0byBhbGxvdyB5b3UgdG8gY2hvb3NlIHRoZSBzdGFydGluZyBmb2xkZXIvcHN0IGZpbGUgdG8NCnNjYW4gb3IgdG8gcHJvdmlkZSBmaWx0ZXIgdGV4dCB0byBleHRyYWN0IGFsbCBvZiB0aGUgbWVzc2FnZXMgZm9yIGNlcnRhaW4NCmRvbWFpbiBvciBzb21ldGhpbmcuIEkgY2FuIHRoaW5rIG9mIGxvdHMgdG8gZG8gd2l0aCB0aGlzLCBidXQgaXQgd2lsbCBoYXZlDQp0byB3YWl0IHVudGlsIGFub3RoZXIgZGF5LiBJbiB0aGUgbWVhbnRpbWUsIGlmIHlvdSBjYW4gbGVhcm4gc29tZXRoaW5nIGZyb20NCm15IHJvdWdoIGNvZGluZyBvciBvZmZlciBzdWdnZXN0aW9ucyBmb3IgaW1wcm92ZW1lbnRzLCBnbyBmb3IgaXQhDQoNClRoYW5rcyB0byB0aG9zZSB3aG8gcmVzcG9uZGVkIHRvIG15IHJlcXVlc3QgZm9yIGhlbHAhIFlvdSBjYW1lIHRocm91Z2ggYW5kDQpoZXJlIGFyZSB0aGUgcmVzdWx0cyBvZiB5b3VyIGhlbHA6DQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkxPQ0FMIGxvT3V0bG9vayBBUyAiT3V0bG9vay5BcHBsaWNhdGlvbiINCkxPQ0FMIGxuQmVnUHJvY2VzcywgbG5Db3VudGVyLCBsbkVuZFByb2Nlc3MsIGxvRm9sZGVycywgbG9NLCBsb05hbWVTcGFjZQ0KDQpDTEVBUg0KDQptLmxuQmVnUHJvY2VzcyA9IFNFQ09ORFMoKQ0KDQpDUkVBVEUgQ1VSU09SIEZvbGRlckxpc3QgKEZvbGRlck5hbWUgQygxMDApIE5PVCBOVUxMKQ0KDQpDUkVBVEUgQ1VSU09SIEVtYWlsU2VuZGVycyAoU2VudEJ5IGMoMTAwKSBOT1QgTlVMTCwgQWRkcmVzcyBDKDEwMCkgTk9UIE5VTEwsDQpmaXJzdGNvbnRhY3QgVCBOT1QgTlVMTCwgbGFzdGNvbnRhY3QgVCBOT1QgTlVMTCkNCklOREVYIE9OIERFTEVURUQoKSBUQUcgcGtkZWwNCklOREVYIE9OIEFkZHJlc3MgVEFHIEFkZHJlc3MNCg0KbS5sb091dGxvb2sgPSBDUkVBVEVPQkpFQ1QoIk91dGxvb2suQXBwbGljYXRpb24iKQ0KbS5sb05hbWVTcGFjZSA9IG0ubG9PdXRsb29rLkdldE5hbWVTcGFjZSgiTUFQSSIpDQptLmxvRm9sZGVycyA9IG0ubG9OYW1lU3BhY2UuRm9sZGVycw0KDQpGT1IgbS5sbkNvdW50ZXIgPSAxIFRPIG0ubG9Gb2xkZXJzLkNPVU5UDQoNCklGIFRZUEUoImxvRm9sZGVycy5JVEVNKGxuQ291bnRlcikuRm9sZGVycy5jb3VudCIpID0gIk4iDQoNCklGIG0ubG9Gb2xkZXJzLklURU0obS5sbkNvdW50ZXIpLkZvbGRlcnMuQ09VTlQgPiAwDQoNCj8gbS5sbkNvdW50ZXIsIG0ubG9Gb2xkZXJzLklURU0obS5sbkNvdW50ZXIpLk5BTUUNCg0KSU5TRVJUIElOVE8gRm9sZGVyTGlzdCAoRm9sZGVyTmFtZSkgVkFMVUVTDQooVFJBTlNGT1JNKG0ubG5Db3VudGVyKSArIFNQQUNFKDEpICsgbS5sb0ZvbGRlcnMuSVRFTShtLmxuQ291bnRlcikuTkFNRSkNCg0KRk9SIEVBQ0ggbS5sb00gSU4NCm0ubG9Gb2xkZXJzLklURU0obS5sbkNvdW50ZXIpLkl0ZW1zDQoNCklGIFRZUEUoImxvbS5TZW5kZXIuQWRkcmVzcyIpID0gIkMiDQoNClNFRUsgUEFEUihtLmxvTS5TZW5kZXIuQWRkcmVzcywgMTAwKQ0KT1JERVIgVEFHIEFkZHJlc3MgSU4gRW1haWxTZW5kZXJzDQoNCklGICFGT1VORCgiRW1haWxTZW5kZXJzIikNCg0KSU5TRVJUIElOVE8gRW1haWxTZW5kZXJzDQooU2VudEJ5LCBBZGRyZXNzLCBmaXJzdGNvbnRhY3QsIGxhc3Rjb250YWN0KSBWQUxVRVMgKG0ubG9NLlNlbmRlci5OYW1lLA0KbS5sb00uU2VuZGVyLkFkZHJlc3MsIG0ubG9NLlJlY2VpdmVkVGltZSwgbS5sb00uUmVjZWl2ZWRUaW1lKQ0KDQpFTFNFDQoNCklGIG0ubG9NLlJlY2VpdmVkVGltZSA+DQpFbWFpbFNlbmRlcnMubGFzdGNvbnRhY3QNCg0KUkVQTEFDRQ0KRW1haWxTZW5kZXJzLmxhc3Rjb250YWN0IFdJVEggbS5sb00uUmVjZWl2ZWRUaW1lIElOIEVtYWlsU2VuZGVycw0KDQpFTkRJRg0KDQpFTkRJRg0KDQpFTkRJRg0KDQpFTkRGT1INCg0KR2V0Q2hpbGRyZW4obS5sb0ZvbGRlcnMuSVRFTShtLmxuQ291bnRlcikuRm9sZGVycywNCjEpDQoNCkVORElGDQoNCkVORElGDQoNCkVOREZPUg0KDQptLmxvTmFtZVNwYWNlID0gTlVMTA0KbS5sb091dGxvb2sgPSBOVUxMDQpSRUxFQVNFIG0ubG9OYW1lU3BhY2UNClJFTEVBU0UgbS5sb091dGxvb2sNCg0KbS5sbkVuZFByb2Nlc3MgPSBTRUNPTkRTKCkNCj8NCj8NCj8gIk1pbnV0ZXMgVG8gUHJvY2VzczoiLCBST1VORCgobS5sbkVuZFByb2Nlc3MgLSBtLmxuQmVnUHJvY2VzcykgLyA2MCwgMikNCg0KUFJPQ0VEVVJFIEdldENoaWxkcmVuDQpMUEFSQU1FVEVSUyB0b0ZvbGRlcnMsIHRuTGV2ZWwNCg0KTE9DQUwgbG5Db3VudGVyDQoNCkZPUiBtLmxuQ291bnRlciA9IDEgVE8gbS50b0ZvbGRlcnMuQ09VTlQNCg0KSUYgVFlQRSgidG9Gb2xkZXJzLklURU0obG5Db3VudGVyKS5Gb2xkZXJzLmNvdW50IikgPSAiTiINCg0KPyBTUEFDRShtLnRuTGV2ZWwgKiA1KSwgbS5sbkNvdW50ZXIsDQptLnRvRm9sZGVycy5JVEVNKG0ubG5Db3VudGVyKS5OQU1FDQpJTlNFUlQgSU5UTyBGb2xkZXJMaXN0IChGb2xkZXJOYW1lKSBWQUxVRVMNCihTUEFDRShtLnRuTGV2ZWwgKiA1KSArIFRSQU5TRk9STShtLmxuQ291bnRlcikgKyBTUEFDRSgxKSArDQptLnRvRm9sZGVycy5JVEVNKG0ubG5Db3VudGVyKS5OQU1FKQ0KDQpGT1IgRUFDSCBtLmxvTSBJTg0KbS50b0ZvbGRlcnMuSVRFTShtLmxuQ291bnRlcikuSXRlbXMNCg0KSUYgVFlQRSgibG9tLlNlbmRlci5BZGRyZXNzIikgPSAiQyINCg0KU0VFSyBQQURSKG0ubG9NLlNlbmRlci5BZGRyZXNzLCAxMDApDQpPUkRFUiBUQUcgQWRkcmVzcyBJTiBFbWFpbFNlbmRlcnMNCg0KSUYgIUZPVU5EKCJFbWFpbFNlbmRlcnMiKQ0KDQpJTlNFUlQgSU5UTyBFbWFpbFNlbmRlcnMNCihTZW50QnksIEFkZHJlc3MsIGZpcnN0Y29udGFjdCwgbGFzdGNvbnRhY3QpIFZBTFVFUyAobS5sb00uU2VuZGVyLk5hbWUsDQptLmxvTS5TZW5kZXIuQWRkcmVzcywgbS5sb00uUmVjZWl2ZWRUaW1lLCBtLmxvTS5SZWNlaXZlZFRpbWUpDQoNCkVMU0UNCg0KSUYgbS5sb00uUmVjZWl2ZWRUaW1lID4NCkVtYWlsU2VuZGVycy5sYXN0Y29udGFjdA0KDQpSRVBMQUNFDQpFbWFpbFNlbmRlcnMubGFzdGNvbnRhY3QgV0lUSCBtLmxvTS5SZWNlaXZlZFRpbWUgSU4gRW1haWxTZW5kZXJzDQoNCkVORElGDQoNCkVORElGDQoNCkVORElGDQoNCkVOREZPUg0KDQpJRiBtLnRvRm9sZGVycy5JVEVNKG0ubG5Db3VudGVyKS5Gb2xkZXJzLkNPVU5UID4gMA0KDQoNCkdldENoaWxkcmVuKG0udG9Gb2xkZXJzLklURU0obS5sbkNvdW50ZXIpLkZvbGRlcnMsIG0udG5MZXZlbCArIDEpDQoNCkVORElGDQoNCkVORElGDQoNCkVOREZPUg0KDQpFTkRQUk9DDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClBhdWwgSC4gVGFydmVyDQpUYXJ2ZXIgUHJvZ3JhbSBDb25zdWx0YW50cywgSW5jLg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogUHJvZm94VGVjaCBbbWFpbHRvOnByb2ZveHRlY2gtYm91bmNlc0BsZWFmZS5jb21dIE9uIEJlaGFsZiBPZiBHaWFubmkNClR1cnJpDQpTZW50OiBTdW5kYXksIEF1Z3VzdCAxMSwgMjAyNCA3OjA2IEFNDQpUbzogcHJvZm94dGVjaEBsZWFmZS5jb208bWFpbHRvOnByb2ZveHRlY2hAbGVhZmUuY29tPg0KU3ViamVjdDogUmU6IE91dGxvb2sgQXV0b21hdGlvbiBIZWxwIE5lZWRlZA0KDQpIaSBQYXVsLA0KDQpkaWQgeW91IGZpbmQgdGhlc2UgcG9zdHMgZHVyaW5nIHlvdXIgSW50ZXJuZXQgc2VhcmNoZXM/DQoNCkVudW1lcmF0aW5nIE91dGxvb2sgRm9sZGVycyBpbnRvIFRyZWV2aWV3DQpodHRwczovL3d3dy50ZWstdGlwcy5jb20vdmlld3RocmVhZC5jZm0/cWlkPTkxMzE3NjxodHRwczovL3VybC51cy5tLm1pbWVjYXN0cHJvdGVjdC5jb20vcy9BNENVQzlycHlEVGtNcDlSaDBDd3U2aXRCST9kb21haW49dGVrLXRpcHMuY29tPg0KDQpDb3B5aW5nIEVtYWlscyBpbnRvIGEgVkZQIHRhYmxlIGZyb20gT3V0bG9vaw0KaHR0cHM6Ly93d3cudGVrLXRpcHMuY29tL3ZpZXd0aHJlYWQuY2ZtP3FpZD0xNzg0NDQyPGh0dHBzOi8vdXJsLnVzLm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zLzE0X3RDMFIybTBJR01MWkpjckZrdXlteTA1P2RvbWFpbj10ZWstdGlwcy5jb20+DQoNClByb2JhYmx5IHlvdSBuZWVkIHRvIG9wZW4gYW5kIGNvbm5lY3QgdG8geW91ciBPdXRsb29rIGluc3RhbmNlIHlvdXIgdmFyaXVvcw0KLlBTVCBmaWxlcyBiZWZvcmUgcnVubmluZyBhbnkgY29kZSB0aGF0IHNlYXJjaGVzIGZvciBmb2xkZXJzIGFuZCBlbWFpbHMuDQoNCkhUSCwNCkdpYW5uaQ0KDQpPbiBGcmksIDkgQXVnIDIwMjQgMTI6MTc6NTEgLTA1MDAsICJQYXVsIEguIFRhcnZlciIgPHBhdWxAdHBjcXBjLmNvbTxtYWlsdG86cGF1bEB0cGNxcGMuY29tPj4gd3JvdGU6DQoNCk9rLCBiZWZvcmUgSSBhc2sgbXkgcXVlc3Rpb24sIEkgd2FudCB0byBjb25maXJtIHRoYXQgSSd2ZSBsb29rZWQgYXQgdGhlDQpNaWNyb3NvZnQgT2ZmaWNlIEF1dG9tYXRpb24gd2l0aCBWaXN1YWwgRm94UHJvIGJvb2ssIHNlYXJjaGVkIGZvciBPdXRsb29rDQpyZWxhdGVkIG1lc3NhZ2VzIG9uIHRoaXMgbGlzdCBhbmQgc3BlbnQgbW9yZSB0aGFuIEkgd2FudGVkIHRvIG9uIHRoZQ0KSW50ZXJuZXQgYW5kIHN0aWxsIGhhdmVuJ3QgZm91bmQgYSBzb2x1dGlvbiB0aGF0IEkgY2FuIHVzZSBvciBtb2RpZnkgdG8NCmFjY29tcGxpc2ggbXkgZ29hbC4gU28sIGl0J3MgdXAgdG8gUHJvRm94IG5vdy4NCg0KDQoNCkhlcmUncyB3aGF0IEkgbmVlZCB0byBkbzogSSBoYXZlIGEgc3lzdGVtIHdpdGggT3V0bG9vayAyMDEwIHJ1bm5pbmcgb24gaXQuIEkNCm5lZWQgdG8gYWNjZXNzIHRoZSBpbmRpdmlkdWFsIGVtYWlscyBzdG9yZWQgaW4gbXVsdGlwbGUgcHN0IGZpbGVzIHdpdGgNCm11bHRpcGxlIHN1Yi1mb2xkZXJzIGFuZCBleHRyYWN0IHRoZSB1bmlxdWUgZW1haWwgYWRkcmVzc2VzIGZvdW5kIG9uIHRob3NlDQplbWFpbHMuIElkZWFsbHksIEknZCBsaWtlIHRvIHNlbGVjdCB0aGUgLlBTVCBmaWxlIGFuZCBoYXZlIGEgcHJvZ3JhbSBsb29wDQp0aHJvdWdoIGFsbCBvZiB0aGUgZm9sZGVycy9zdWJmb2xkZXJzLCB0b3VjaCBlYWNoIGVtYWlsIGFuZCBleHRyYWN0IGFueQ0KZW1haWwgYWRkcmVzc2VzIHRoYXQgY29udGFpbiBhIHNlYXJjaCBzdHJpbmcuDQoNCg0KDQpJIGNhbiBnZXQgYW4gT3V0bG9vayBvYmplY3QgYWN0aXZlIGluIFZGUCwgYnV0IHRoaW5ncyBnZXQgbXVkZHkgYWZ0ZXIgdGhhdC4NCg0KDQoNCkFueSBpZGVhcz8gT3IgaXMgdGhpcyBldmVuIGRvYWJsZT8gSSBmZWVsIGxpa2UgdGhlIEZveCBpcyBjYXBhYmxlLCBidXQgYXQNCnRoZSBtb21lbnQgSSdtIG5vdC4gSg0KDQoNCg0KUGF1bCBILiBUYXJ2ZXINClRhcnZlciBQcm9ncmFtIENvbnN1bHRhbnRzLCBJbmMuDQoNCg0KDQoNCg0KDQoNCi0tLSBTdHJpcE1pbWUgUmVwb3J0IC0tIHByb2Nlc3NlZCBNSU1FIHBhcnRzIC0tLQ0KbXVsdGlwYXJ0L2FsdGVybmF0aXZlDQp0ZXh0L3BsYWluICh0ZXh0IGJvZHkgLS0ga2VwdCkNCnRleHQvaHRtbA0KLS0tDQoNCltleGNlc3NpdmUgcXVvdGluZyByZW1vdmVkIGJ5IHNlcnZlcl0NCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NClBvc3QgTWVzc2FnZXMgdG86IFByb0ZveEBsZWFmZS5jb208bWFpbHRvOlByb0ZveEBsZWFmZS5jb20+DQpTdWJzY3JpcHRpb24gTWFpbnRlbmFuY2U6IGh0dHBzOi8vbWFpbC5sZWFmZS5jb20vbWFpbG1hbi9saXN0aW5mby9wcm9mb3g8aHR0cHM6Ly91cmwudXMubS5taW1lY2FzdHByb3RlY3QuY29tL3MvMUlPY0NnSnhHbmNBbTdwUHV5SFl1QW1QQl8/ZG9tYWluPW1haWwubGVhZmUuY29tPg0KT1QtZnJlZSB2ZXJzaW9uIG9mIHRoaXMgbGlzdDogaHR0cHM6Ly9tYWlsLmxlYWZlLmNvbS9tYWlsbWFuL2xpc3RpbmZvL3Byb2ZveHRlY2g8aHR0cHM6Ly91cmwudXMubS5taW1lY2FzdHByb3RlY3QuY29tL3MvQmRIeUNqUnZrMEluM3ZQbENZSXh1eFZtWVM/ZG9tYWluPW1haWwubGVhZmUuY29tPg0KU2VhcmNoYWJsZSBBcmNoaXZlOiBodHRwczovL2xlYWZlLmNvbS9hcmNoaXZlczxodHRwczovL3VybC51cy5tLm1pbWVjYXN0cHJvdGVjdC5jb20vcy9Eb0lOQ2tSd2xySU9ycDFZdXlTNnVCTXZwUT9kb21haW49bGVhZmUuY29tPg0KVGhpcyBtZXNzYWdlOiBodHRwczovL2xlYWZlLmNvbS9hcmNoaXZlcy9ieU1JRC8wNjk4MDFkYWVjZjYkNzMwZDFjODAkNTkyNzU1ODAkQHRwY3FwYy5jb208aHR0cHM6Ly91cmwudXMubS5taW1lY2FzdHByb3RlY3QuY29tL3MvMll5dkNsWXZtMnUyQXZwT1VEVGp1M1ZVR1g/ZG9tYWluPWxlYWZlLmNvbT4NCioqIEFsbCBwb3N0aW5ncywgdW5sZXNzIGV4cGxpY2l0bHkgc3RhdGVkIG90aGVyd2lzZSwgYXJlIHRoZSBvcGluaW9ucyBvZiB0aGUgYXV0aG9yLCBhbmQgZG8gbm90IGNvbnN0aXR1dGUgbGVnYWwgb3IgbWVkaWNhbCBhZHZpY2UuIFRoaXMgc3RhdGVtZW50IGlzIGFkZGVkIHRvIHRoZSBtZXNzYWdlcyBmb3IgdGhvc2UgbGF3eWVycyB3aG8gYXJlIHRvbyBzdHVwaWQgdG8gc2VlIHRoZSBvYnZpb3VzLg0K--- StripMime Report -- processed MIME parts ---multipart/alternative text/plain (text body -- kept) text/html---
Hey there Richard - I'm having a problem understanding your Question/Problem - when you talk in Alien Speak!!!
I'm sure I'm not the only one...
-K
On Mon, Aug 12, 2024 at 2:27 PM Richard Kaye rkaye@invaluable.com wrote:
UmVmYWN0b3IgdGltZS4g8J+YiiBZb3Ugc2hvdWxkIGJlIGFibGUgdG8gc3dhcCBvdXQgdGhvc2Ug
U0VFSyBmdW5jdGlvbiArICFGT1VORCgpIGNhbGxzIHdpdGggYSBzaW5nbGUgSU5ERVhTRUVLIGNh
bGwuDQoNCi0tDQoNCnJrDQoNCkZyb206IFByb2ZveFRlY2ggPHByb2ZveHRlY2gtYm91bmNlc0Bs
ZWFmZS5jb20+IE9uIEJlaGFsZiBPZiBQYXVsIEguIFRhcnZlcg0KU2VudDogTW9uZGF5LCBBdWd1
c3QgMTIsIDIwMjQgNDozMCBQTQ0KVG86IHByb2ZveHRlY2hAbGVhZmUuY29tDQpTdWJqZWN0OiBS
RTogT3V0bG9vayBBdXRvbWF0aW9uIEhlbHAgTmVlZGVkDQoNClNPTFZFRCEgVGhlIEZveCBjb21l
cyB0aHJvdWdoIGFnYWluIQ0KDQpVc2luZyB0aGUgdHdvIGxpbmtzIHRoYXQgR2lhbm5pIHByb3Zp
ZGVkLCBJIHN0YXJ0ZWQgcGxheWluZyBhcm91bmQgd2l0aCB0aGUNCmNvZGUgcHJvdmlkZWQgdGhl
cmUgYW5kIGxvb2tpbmcgYXQgd2hhdCBvcHRpb25zIHdlcmUgYXZhaWxhYmxlIHRvIHRoZQ0KdmFy
aW91cyBPdXRsb29rIE9iamVjdHMgYW5kIHdhcyBhYmxlIHRvIHB1dCB0b2dldGhlciBhIHF1aWNr
IGFuZCBkaXJ0eQ0KcHJvZ3JhbSB0aGF0IHBhcnNlcyB0aHJvdWdoIGFsbCBvZiB0aGUgZm9sZGVy
cyBhbmQgUFNUIGZpbGVzIEkgaGF2ZSBvcGVuIGluDQpPdXRsb29rIGFuZCBleHRyYWN0cyBhbGwg
b2YgdGhlIHNlbmRlciBlbWFpbCBhZGRyZXNzZXMgZnJvbSBhbGwgb2YgdGhlDQplbWFpbHMgSSd2
ZSByZWNlaXZlZCBpbiB0aGUgcGFzdCAyNSB5ZWFycy4gSXQgYWxzbyBjYXB0dXJlcyB0aGUgbmFt
ZSwgdGhlDQpmaXJzdCBkYXRlIGFuZCBsYXN0IGRhdGVzIEkgcmVjZWl2ZWQgYSBtZXNzYWdlIGZy
b20gZXZlcnkgZW1haWwgYWRkcmVzcywgc28NCkkgY2FuIGZpbHRlciB0aGUgbGlzdCBmdXJ0aGVy
LiBUaGVyZSBhcmUgdHdvIGN1cnNvcnMgY3JlYXRlZCBkdXJpbmcgdGhlDQpwcm9jZXNzLCB0aGUg
Zmlyc3QgY2FwdHVyZXMgdGhlIGZvbGRlcnMgZXhhbWluZWQgYW5kIHRoZSBzZWNvbmQgY2FwdHVy
ZXMgYWxsDQpvZiB0aGUgZW1haWwgYWRkcmVzc2VzLiBJJ2xsIGF0dGFjaCB0aGUgcHJvZ3JhbSBi
ZWxvdyBqdXN0IGluIGNhc2Ugc29tZW9uZQ0KZWxzZSBuZWVkcyBzb21ldGhpbmcgc2ltaWxhci4N
Cg0KQXMgSSBzYWlkIGl0IGlzIGFib3V0IDk1JSBjb21wbGV0ZSBtZWFuaW5nIHRoZXJlIGFyZSBh
IGZldyB0aGluZ3MgSSdkDQpwcm9iYWJseSBkbyBkaWZmZXJlbnRseSwgbGlrZSBmb3JjZSBjYXNl
IHRvIHVwcGVyIG9yIGxvd2VyIHRvIGVuc3VyZSBubw0KZHVwbGljYXRlcyBnZXQgdGhyb3VnaCAo
IEkgZml4ZWQgdGhpcyB3aGlsZSBlZGl0aW5nIHRoZSByZXN1bHRzIGluIEV4Y2VsKSwNCnRoZXJl
J3Mgbm8gcmVhbCB1c2VyIGludGVyZmFjZSB3aGljaCB3b3VsZCBiZSBuaWNlLCBpdCB3b3VsZCBi
ZSB2ZXJ5IGVhc3kgdG8NCmNyZWF0ZSBhIGRyb3AtZG93biB0byBhbGxvdyB5b3UgdG8gY2hvb3Nl
IHRoZSBzdGFydGluZyBmb2xkZXIvcHN0IGZpbGUgdG8NCnNjYW4gb3IgdG8gcHJvdmlkZSBmaWx0
ZXIgdGV4dCB0byBleHRyYWN0IGFsbCBvZiB0aGUgbWVzc2FnZXMgZm9yIGNlcnRhaW4NCmRvbWFp
biBvciBzb21ldGhpbmcuIEkgY2FuIHRoaW5rIG9mIGxvdHMgdG8gZG8gd2l0aCB0aGlzLCBidXQg
aXQgd2lsbCBoYXZlDQp0byB3YWl0IHVudGlsIGFub3RoZXIgZGF5LiBJbiB0aGUgbWVhbnRpbWUs
IGlmIHlvdSBjYW4gbGVhcm4gc29tZXRoaW5nIGZyb20NCm15IHJvdWdoIGNvZGluZyBvciBvZmZl
ciBzdWdnZXN0aW9ucyBmb3IgaW1wcm92ZW1lbnRzLCBnbyBmb3IgaXQhDQoNClRoYW5rcyB0byB0
aG9zZSB3aG8gcmVzcG9uZGVkIHRvIG15IHJlcXVlc3QgZm9yIGhlbHAhIFlvdSBjYW1lIHRocm91
Z2ggYW5kDQpoZXJlIGFyZSB0aGUgcmVzdWx0cyBvZiB5b3VyIGhlbHA6DQoNCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkxP
Q0FMIGxvT3V0bG9vayBBUyAiT3V0bG9vay5BcHBsaWNhdGlvbiINCkxPQ0FMIGxuQmVnUHJvY2Vz
cywgbG5Db3VudGVyLCBsbkVuZFByb2Nlc3MsIGxvRm9sZGVycywgbG9NLCBsb05hbWVTcGFjZQ0K
DQpDTEVBUg0KDQptLmxuQmVnUHJvY2VzcyA9IFNFQ09ORFMoKQ0KDQpDUkVBVEUgQ1VSU09SIEZv
bGRlckxpc3QgKEZvbGRlck5hbWUgQygxMDApIE5PVCBOVUxMKQ0KDQpDUkVBVEUgQ1VSU09SIEVt
YWlsU2VuZGVycyAoU2VudEJ5IGMoMTAwKSBOT1QgTlVMTCwgQWRkcmVzcyBDKDEwMCkgTk9UIE5V
TEwsDQpmaXJzdGNvbnRhY3QgVCBOT1QgTlVMTCwgbGFzdGNvbnRhY3QgVCBOT1QgTlVMTCkNCklO
REVYIE9OIERFTEVURUQoKSBUQUcgcGtkZWwNCklOREVYIE9OIEFkZHJlc3MgVEFHIEFkZHJlc3MN
Cg0KbS5sb091dGxvb2sgPSBDUkVBVEVPQkpFQ1QoIk91dGxvb2suQXBwbGljYXRpb24iKQ0KbS5s
b05hbWVTcGFjZSA9IG0ubG9PdXRsb29rLkdldE5hbWVTcGFjZSgiTUFQSSIpDQptLmxvRm9sZGVy
cyA9IG0ubG9OYW1lU3BhY2UuRm9sZGVycw0KDQpGT1IgbS5sbkNvdW50ZXIgPSAxIFRPIG0ubG9G
b2xkZXJzLkNPVU5UDQoNCklGIFRZUEUoImxvRm9sZGVycy5JVEVNKGxuQ291bnRlcikuRm9sZGVy
cy5jb3VudCIpID0gIk4iDQoNCklGIG0ubG9Gb2xkZXJzLklURU0obS5sbkNvdW50ZXIpLkZvbGRl
cnMuQ09VTlQgPiAwDQoNCj8gbS5sbkNvdW50ZXIsIG0ubG9Gb2xkZXJzLklURU0obS5sbkNvdW50
ZXIpLk5BTUUNCg0KSU5TRVJUIElOVE8gRm9sZGVyTGlzdCAoRm9sZGVyTmFtZSkgVkFMVUVTDQoo
VFJBTlNGT1JNKG0ubG5Db3VudGVyKSArIFNQQUNFKDEpICsgbS5sb0ZvbGRlcnMuSVRFTShtLmxu
Q291bnRlcikuTkFNRSkNCg0KRk9SIEVBQ0ggbS5sb00gSU4NCm0ubG9Gb2xkZXJzLklURU0obS5s
bkNvdW50ZXIpLkl0ZW1zDQoNCklGIFRZUEUoImxvbS5TZW5kZXIuQWRkcmVzcyIpID0gIkMiDQoN
ClNFRUsgUEFEUihtLmxvTS5TZW5kZXIuQWRkcmVzcywgMTAwKQ0KT1JERVIgVEFHIEFkZHJlc3Mg
SU4gRW1haWxTZW5kZXJzDQoNCklGICFGT1VORCgiRW1haWxTZW5kZXJzIikNCg0KSU5TRVJUIElO
VE8gRW1haWxTZW5kZXJzDQooU2VudEJ5LCBBZGRyZXNzLCBmaXJzdGNvbnRhY3QsIGxhc3Rjb250
YWN0KSBWQUxVRVMgKG0ubG9NLlNlbmRlci5OYW1lLA0KbS5sb00uU2VuZGVyLkFkZHJlc3MsIG0u
bG9NLlJlY2VpdmVkVGltZSwgbS5sb00uUmVjZWl2ZWRUaW1lKQ0KDQpFTFNFDQoNCklGIG0ubG9N
LlJlY2VpdmVkVGltZSA+DQpFbWFpbFNlbmRlcnMubGFzdGNvbnRhY3QNCg0KUkVQTEFDRQ0KRW1h
aWxTZW5kZXJzLmxhc3Rjb250YWN0IFdJVEggbS5sb00uUmVjZWl2ZWRUaW1lIElOIEVtYWlsU2Vu
ZGVycw0KDQpFTkRJRg0KDQpFTkRJRg0KDQpFTkRJRg0KDQpFTkRGT1INCg0KR2V0Q2hpbGRyZW4o
bS5sb0ZvbGRlcnMuSVRFTShtLmxuQ291bnRlcikuRm9sZGVycywNCjEpDQoNCkVORElGDQoNCkVO
RElGDQoNCkVOREZPUg0KDQptLmxvTmFtZVNwYWNlID0gTlVMTA0KbS5sb091dGxvb2sgPSBOVUxM
DQpSRUxFQVNFIG0ubG9OYW1lU3BhY2UNClJFTEVBU0UgbS5sb091dGxvb2sNCg0KbS5sbkVuZFBy
b2Nlc3MgPSBTRUNPTkRTKCkNCj8NCj8NCj8gIk1pbnV0ZXMgVG8gUHJvY2VzczoiLCBST1VORCgo
bS5sbkVuZFByb2Nlc3MgLSBtLmxuQmVnUHJvY2VzcykgLyA2MCwgMikNCg0KUFJPQ0VEVVJFIEdl
dENoaWxkcmVuDQpMUEFSQU1FVEVSUyB0b0ZvbGRlcnMsIHRuTGV2ZWwNCg0KTE9DQUwgbG5Db3Vu
dGVyDQoNCkZPUiBtLmxuQ291bnRlciA9IDEgVE8gbS50b0ZvbGRlcnMuQ09VTlQNCg0KSUYgVFlQ
RSgidG9Gb2xkZXJzLklURU0obG5Db3VudGVyKS5Gb2xkZXJzLmNvdW50IikgPSAiTiINCg0KPyBT
UEFDRShtLnRuTGV2ZWwgKiA1KSwgbS5sbkNvdW50ZXIsDQptLnRvRm9sZGVycy5JVEVNKG0ubG5D
b3VudGVyKS5OQU1FDQpJTlNFUlQgSU5UTyBGb2xkZXJMaXN0IChGb2xkZXJOYW1lKSBWQUxVRVMN
CihTUEFDRShtLnRuTGV2ZWwgKiA1KSArIFRSQU5TRk9STShtLmxuQ291bnRlcikgKyBTUEFDRSgx
KSArDQptLnRvRm9sZGVycy5JVEVNKG0ubG5Db3VudGVyKS5OQU1FKQ0KDQpGT1IgRUFDSCBtLmxv
TSBJTg0KbS50b0ZvbGRlcnMuSVRFTShtLmxuQ291bnRlcikuSXRlbXMNCg0KSUYgVFlQRSgibG9t
LlNlbmRlci5BZGRyZXNzIikgPSAiQyINCg0KU0VFSyBQQURSKG0ubG9NLlNlbmRlci5BZGRyZXNz
LCAxMDApDQpPUkRFUiBUQUcgQWRkcmVzcyBJTiBFbWFpbFNlbmRlcnMNCg0KSUYgIUZPVU5EKCJF
bWFpbFNlbmRlcnMiKQ0KDQpJTlNFUlQgSU5UTyBFbWFpbFNlbmRlcnMNCihTZW50QnksIEFkZHJl
c3MsIGZpcnN0Y29udGFjdCwgbGFzdGNvbnRhY3QpIFZBTFVFUyAobS5sb00uU2VuZGVyLk5hbWUs
DQptLmxvTS5TZW5kZXIuQWRkcmVzcywgbS5sb00uUmVjZWl2ZWRUaW1lLCBtLmxvTS5SZWNlaXZl
ZFRpbWUpDQoNCkVMU0UNCg0KSUYgbS5sb00uUmVjZWl2ZWRUaW1lID4NCkVtYWlsU2VuZGVycy5s
YXN0Y29udGFjdA0KDQpSRVBMQUNFDQpFbWFpbFNlbmRlcnMubGFzdGNvbnRhY3QgV0lUSCBtLmxv
TS5SZWNlaXZlZFRpbWUgSU4gRW1haWxTZW5kZXJzDQoNCkVORElGDQoNCkVORElGDQoNCkVORElG
DQoNCkVOREZPUg0KDQpJRiBtLnRvRm9sZGVycy5JVEVNKG0ubG5Db3VudGVyKS5Gb2xkZXJzLkNP
VU5UID4gMA0KDQoNCkdldENoaWxkcmVuKG0udG9Gb2xkZXJzLklURU0obS5sbkNvdW50ZXIpLkZv
bGRlcnMsIG0udG5MZXZlbCArIDEpDQoNCkVORElGDQoNCkVORElGDQoNCkVOREZPUg0KDQpFTkRQ
Uk9DDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQoNClBhdWwgSC4gVGFydmVyDQpUYXJ2ZXIgUHJvZ3JhbSBDb25zdWx0YW50
cywgSW5jLg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogUHJvZm94VGVjaCBb
bWFpbHRvOnByb2ZveHRlY2gtYm91bmNlc0BsZWFmZS5jb21dIE9uIEJlaGFsZiBPZiBHaWFubmkN
ClR1cnJpDQpTZW50OiBTdW5kYXksIEF1Z3VzdCAxMSwgMjAyNCA3OjA2IEFNDQpUbzogcHJvZm94
dGVjaEBsZWFmZS5jb208bWFpbHRvOnByb2ZveHRlY2hAbGVhZmUuY29tPg0KU3ViamVjdDogUmU6
IE91dGxvb2sgQXV0b21hdGlvbiBIZWxwIE5lZWRlZA0KDQpIaSBQYXVsLA0KDQpkaWQgeW91IGZp
bmQgdGhlc2UgcG9zdHMgZHVyaW5nIHlvdXIgSW50ZXJuZXQgc2VhcmNoZXM/DQoNCkVudW1lcmF0
aW5nIE91dGxvb2sgRm9sZGVycyBpbnRvIFRyZWV2aWV3DQpodHRwczovL3d3dy50ZWstdGlwcy5j
b20vdmlld3RocmVhZC5jZm0/cWlkPTkxMzE3NjxodHRwczovL3VybC51cy5tLm1pbWVjYXN0cHJv
dGVjdC5jb20vcy9BNENVQzlycHlEVGtNcDlSaDBDd3U2aXRCST9kb21haW49dGVrLXRpcHMuY29t
Pg0KDQpDb3B5aW5nIEVtYWlscyBpbnRvIGEgVkZQIHRhYmxlIGZyb20gT3V0bG9vaw0KaHR0cHM6
Ly93d3cudGVrLXRpcHMuY29tL3ZpZXd0aHJlYWQuY2ZtP3FpZD0xNzg0NDQyPGh0dHBzOi8vdXJs
LnVzLm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zLzE0X3RDMFIybTBJR01MWkpjckZrdXlteTA1P2Rv
bWFpbj10ZWstdGlwcy5jb20+DQoNClByb2JhYmx5IHlvdSBuZWVkIHRvIG9wZW4gYW5kIGNvbm5l
Y3QgdG8geW91ciBPdXRsb29rIGluc3RhbmNlIHlvdXIgdmFyaXVvcw0KLlBTVCBmaWxlcyBiZWZv
cmUgcnVubmluZyBhbnkgY29kZSB0aGF0IHNlYXJjaGVzIGZvciBmb2xkZXJzIGFuZCBlbWFpbHMu
DQoNCkhUSCwNCkdpYW5uaQ0KDQpPbiBGcmksIDkgQXVnIDIwMjQgMTI6MTc6NTEgLTA1MDAsICJQ
YXVsIEguIFRhcnZlciIgPHBhdWxAdHBjcXBjLmNvbTxtYWlsdG86cGF1bEB0cGNxcGMuY29tPj4g
d3JvdGU6DQoNCk9rLCBiZWZvcmUgSSBhc2sgbXkgcXVlc3Rpb24sIEkgd2FudCB0byBjb25maXJt
IHRoYXQgSSd2ZSBsb29rZWQgYXQgdGhlDQpNaWNyb3NvZnQgT2ZmaWNlIEF1dG9tYXRpb24gd2l0
aCBWaXN1YWwgRm94UHJvIGJvb2ssIHNlYXJjaGVkIGZvciBPdXRsb29rDQpyZWxhdGVkIG1lc3Nh
Z2VzIG9uIHRoaXMgbGlzdCBhbmQgc3BlbnQgbW9yZSB0aGFuIEkgd2FudGVkIHRvIG9uIHRoZQ0K
SW50ZXJuZXQgYW5kIHN0aWxsIGhhdmVuJ3QgZm91bmQgYSBzb2x1dGlvbiB0aGF0IEkgY2FuIHVz
ZSBvciBtb2RpZnkgdG8NCmFjY29tcGxpc2ggbXkgZ29hbC4gU28sIGl0J3MgdXAgdG8gUHJvRm94
IG5vdy4NCg0KDQoNCkhlcmUncyB3aGF0IEkgbmVlZCB0byBkbzogSSBoYXZlIGEgc3lzdGVtIHdp
dGggT3V0bG9vayAyMDEwIHJ1bm5pbmcgb24gaXQuIEkNCm5lZWQgdG8gYWNjZXNzIHRoZSBpbmRp
dmlkdWFsIGVtYWlscyBzdG9yZWQgaW4gbXVsdGlwbGUgcHN0IGZpbGVzIHdpdGgNCm11bHRpcGxl
IHN1Yi1mb2xkZXJzIGFuZCBleHRyYWN0IHRoZSB1bmlxdWUgZW1haWwgYWRkcmVzc2VzIGZvdW5k
IG9uIHRob3NlDQplbWFpbHMuIElkZWFsbHksIEknZCBsaWtlIHRvIHNlbGVjdCB0aGUgLlBTVCBm
aWxlIGFuZCBoYXZlIGEgcHJvZ3JhbSBsb29wDQp0aHJvdWdoIGFsbCBvZiB0aGUgZm9sZGVycy9z
dWJmb2xkZXJzLCB0b3VjaCBlYWNoIGVtYWlsIGFuZCBleHRyYWN0IGFueQ0KZW1haWwgYWRkcmVz
c2VzIHRoYXQgY29udGFpbiBhIHNlYXJjaCBzdHJpbmcuDQoNCg0KDQpJIGNhbiBnZXQgYW4gT3V0
bG9vayBvYmplY3QgYWN0aXZlIGluIFZGUCwgYnV0IHRoaW5ncyBnZXQgbXVkZHkgYWZ0ZXIgdGhh
dC4NCg0KDQoNCkFueSBpZGVhcz8gT3IgaXMgdGhpcyBldmVuIGRvYWJsZT8gSSBmZWVsIGxpa2Ug
dGhlIEZveCBpcyBjYXBhYmxlLCBidXQgYXQNCnRoZSBtb21lbnQgSSdtIG5vdC4gSg0KDQoNCg0K
UGF1bCBILiBUYXJ2ZXINClRhcnZlciBQcm9ncmFtIENvbnN1bHRhbnRzLCBJbmMuDQoNCg0KDQoN
Cg0KDQoNCi0tLSBTdHJpcE1pbWUgUmVwb3J0IC0tIHByb2Nlc3NlZCBNSU1FIHBhcnRzIC0tLQ0K
bXVsdGlwYXJ0L2FsdGVybmF0aXZlDQp0ZXh0L3BsYWluICh0ZXh0IGJvZHkgLS0ga2VwdCkNCnRl
eHQvaHRtbA0KLS0tDQoNCltleGNlc3NpdmUgcXVvdGluZyByZW1vdmVkIGJ5IHNlcnZlcl0NCg0K
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NClBvc3QgTWVz
c2FnZXMgdG86IFByb0ZveEBsZWFmZS5jb208bWFpbHRvOlByb0ZveEBsZWFmZS5jb20+DQpTdWJz
Y3JpcHRpb24gTWFpbnRlbmFuY2U6IGh0dHBzOi8vbWFpbC5sZWFmZS5jb20vbWFpbG1hbi9saXN0
aW5mby9wcm9mb3g8aHR0cHM6Ly91cmwudXMubS5taW1lY2FzdHByb3RlY3QuY29tL3MvMUlPY0Nn
SnhHbmNBbTdwUHV5SFl1QW1QQl8/ZG9tYWluPW1haWwubGVhZmUuY29tPg0KT1QtZnJlZSB2ZXJz
aW9uIG9mIHRoaXMgbGlzdDogaHR0cHM6Ly9tYWlsLmxlYWZlLmNvbS9tYWlsbWFuL2xpc3RpbmZv
L3Byb2ZveHRlY2g8aHR0cHM6Ly91cmwudXMubS5taW1lY2FzdHByb3RlY3QuY29tL3MvQmRIeUNq
UnZrMEluM3ZQbENZSXh1eFZtWVM/ZG9tYWluPW1haWwubGVhZmUuY29tPg0KU2VhcmNoYWJsZSBB
cmNoaXZlOiBodHRwczovL2xlYWZlLmNvbS9hcmNoaXZlczxodHRwczovL3VybC51cy5tLm1pbWVj
YXN0cHJvdGVjdC5jb20vcy9Eb0lOQ2tSd2xySU9ycDFZdXlTNnVCTXZwUT9kb21haW49bGVhZmUu
Y29tPg0KVGhpcyBtZXNzYWdlOiBodHRwczovL2xlYWZlLmNvbS9hcmNoaXZlcy9ieU1JRC8wNjk4
MDFkYWVjZjYkNzMwZDFjODAkNTkyNzU1ODAkQHRwY3FwYy5jb208aHR0cHM6Ly91cmwudXMubS5t
aW1lY2FzdHByb3RlY3QuY29tL3MvMll5dkNsWXZtMnUyQXZwT1VEVGp1M1ZVR1g/ZG9tYWluPWxl
YWZlLmNvbT4NCioqIEFsbCBwb3N0aW5ncywgdW5sZXNzIGV4cGxpY2l0bHkgc3RhdGVkIG90aGVy
d2lzZSwgYXJlIHRoZSBvcGluaW9ucyBvZiB0aGUgYXV0aG9yLCBhbmQgZG8gbm90IGNvbnN0aXR1
dGUgbGVnYWwgb3IgbWVkaWNhbCBhZHZpY2UuIFRoaXMgc3RhdGVtZW50IGlzIGFkZGVkIHRvIHRo
ZSBtZXNzYWdlcyBmb3IgdGhvc2UgbGF3eWVycyB3aG8gYXJlIHRvbyBzdHVwaWQgdG8gc2VlIHRo ZSBvYnZpb3VzLg0K
--- StripMime Report -- processed MIME parts --- multipart/alternative text/plain (text body -- kept) text/html
[excessive quoting removed by server]
On Aug 12, 2024, at 16:50, Kurt Wendt kurthwendt@gmail.com wrote:
Hey there Richard - I'm having a problem understanding your Question/Problem - when you talk in Alien Speak!!!
I'm sure I'm not the only one...
First, some outlook emails are sent base64 encoded - I have no idea why. You can copy the gibberish text and paste in an online tool like https://toolbox.googleapps.com/apps/encode_decode/ and it will decode it for you.
So I did just that, and the email had the following line:
Refactor time. 😊 You should be able to swap out those SEEK function + !FOUND() calls with a single INDEXSEEK call.
followed by the complete text of Paul's message, including the full program text. IOW, there were 115 characters of actual new message out of 7792 characters total, which is less that 1.5% of the message. Nothing personal against Richard, but rather Microsoft, and their idiotic default of top quoting and including the full text of the message being replied to.
Sorry, but wasteful practices piss me off, and I just wanted to vent.
-- Ed Leafe
Really? Y'all can't read base64? 😉
I always have to remember to tell Lookout to use plain text for Profox replies and in this case I clearly neglected to do that. Since Ed already translated on my behalf all I can say is mea culpa and I'll do better next time. Or you can come to SWFox and yell at me in person. There are still a few in-person slots left...
--
rk
From: ProfoxTech profoxtech-bounces@leafe.com On Behalf Of Ed Leafe Sent: Monday, August 12, 2024 6:03 PM To: profoxtech@leafe.com Subject: Re: Outlook Automation Help Needed
On Aug 12, 2024, at 16:50, Kurt Wendt mailto:kurthwendt@gmail.com wrote:
Hey there Richard - I'm having a problem understanding your Question/Problem - when you talk in Alien Speak!!!
I'm sure I'm not the only one...
First, some outlook emails are sent base64 encoded - I have no idea why. You can copy the gibberish text and paste in an online tool like https://url.us.m.mimecastprotect.com/s/gHgbCM8E2JuqRA33I1uMu2G7wY?domain=too... and it will decode it for you.
So I did just that, and the email had the following line:
Refactor time. 😊 You should be able to swap out those SEEK function + !FOUND() calls with a single INDEXSEEK call.
followed by the complete text of Paul's message, including the full program text. IOW, there were 115 characters of actual new message out of 7792 characters total, which is less that 1.5% of the message. Nothing personal against Richard, but rather Microsoft, and their idiotic default of top quoting and including the full text of the message being replied to.
Sorry, but wasteful practices piss me off, and I just wanted to vent.
-- Ed Leafe
Hmmm...now that I can scan through Outlook emails in VFP efficiently, perhaps I should change my program to detect base64 and auto-translate Richard's emails...
Now that I think about it, that is a rabbit hole for another day as I spent most of today in one already!
Paul H. Tarver Tarver Program Consultants, Inc.
-----Original Message----- From: ProfoxTech [mailto:profoxtech-bounces@leafe.com] On Behalf Of Richard Kaye Sent: Monday, August 12, 2024 5:30 PM To: profoxtech@leafe.com Subject: RE: Outlook Automation Help Needed
Really? Y'all can't read base64? 😉
I always have to remember to tell Lookout to use plain text for Profox replies and in this case I clearly neglected to do that. Since Ed already translated on my behalf all I can say is mea culpa and I'll do better next time. Or you can come to SWFox and yell at me in person. There are still a few in-person slots left...
--
rk
From: ProfoxTech profoxtech-bounces@leafe.com On Behalf Of Ed Leafe Sent: Monday, August 12, 2024 6:03 PM To: profoxtech@leafe.com Subject: Re: Outlook Automation Help Needed
On Aug 12, 2024, at 16:50, Kurt Wendt mailto:kurthwendt@gmail.com wrote:
Hey there Richard - I'm having a problem understanding your Question/Problem - when you talk in Alien Speak!!!
I'm sure I'm not the only one...
First, some outlook emails are sent base64 encoded - I have no idea why. You can copy the gibberish text and paste in an online tool like https://url.us.m.mimecastprotect.com/s/gHgbCM8E2JuqRA33I1uMu2G7wY?domain=too... and it will decode it for you.
So I did just that, and the email had the following line:
Refactor time. 😊 You should be able to swap out those SEEK function + !FOUND() calls with a single INDEXSEEK call.
followed by the complete text of Paul's message, including the full program text. IOW, there were 115 characters of actual new message out of 7792 characters total, which is less that 1.5% of the message. Nothing personal against Richard, but rather Microsoft, and their idiotic default of top quoting and including the full text of the message being replied to.
Sorry, but wasteful practices piss me off, and I just wanted to vent.
-- Ed Leafe
[excessive quoting removed by server]
Sheesh… You make one mistake and you get a reputation… 😉
--
rk
From: ProfoxTech profoxtech-bounces@leafe.com On Behalf Of Paul H. Tarver Sent: Monday, August 12, 2024 6:37 PM To: profoxtech@leafe.com Subject: RE: Outlook Automation Help Needed
Hmmm...now that I can scan through Outlook emails in VFP efficiently, perhaps I should change my program to detect base64 and auto-translate Richard's emails...
Now that I think about it, that is a rabbit hole for another day as I spent most of today in one already!
Paul H. Tarver Tarver Program Consultants, Inc.
The thing about Outlook automation is that its days are probably numbered in the medium to long term. Once the 'new' Outlook client is the default and the current native application is unsupported none of the MAPI or Object Model stuff will apply anymore. Using the Outlook Graph API is probably the future for this sort of requirement.
On Aug 13, 2024, at 08:31, Alan Bourke alanpbourke@fastmail.fm wrote:
The thing about Outlook automation is that its days are probably numbered in the medium to long term. Once the 'new' Outlook client is the default and the current native application is unsupported none of the MAPI or Object Model stuff will apply anymore. Using the Outlook Graph API is probably the future for this sort of requirement.
Speaking of the "New Outlook", I asked perplexity.ai how to disable quoting in that version. Its reply:
In the "New Outlook," there is currently no built-in setting to turn off quoting of the entire message when replying. Unlike the classic Outlook, which provides options under the "File" tab to manage how original messages are included in replies, the "New Outlook" lacks this feature. Users have reported that there is no straightforward way to set up automatic quoting or to disable it entirely in the new interface.As a workaround, you can manually delete the quoted text after hitting reply, or copy and paste only the specific parts of the message you wish to include in your response. Unfortunately, until Microsoft updates the "New Outlook" with more customizable reply settings, these manual methods are the primary options available.
I've always suspected that Microsoft adopted this approach not because it was useful to users, but because it bloated the storage requirements for a business running Exchange, forcing companies to pay lots more money for storage.
-- Ed Leafe
On Tue, 13 Aug 2024, at 2:37 PM, Ed Leafe wrote:
I've always suspected that Microsoft adopted this approach not because it was useful to users, but because it bloated the storage requirements for a business running Exchange, forcing companies to pay lots more money for storage.
I certainly fail to see who is benefiting from the new Outlook (i.e. the web application in a container) other than the Azure division's bean counters. Fine, as a replacement for the default simple Windows mail application - but as a replacement for the full fat desktop client, I just don't get it.
They said the same thing about FoxPro.
Paul H. Tarver Tarver Program Consultants, Inc.
-----Original Message----- From: ProfoxTech [mailto:profoxtech-bounces@leafe.com] On Behalf Of Alan Bourke Sent: Tuesday, August 13, 2024 8:31 AM To: profoxtech@leafe.com Subject: Re: Outlook Automation Help Needed
The thing about Outlook automation is that its days are probably numbered in the medium to long term. Once the 'new' Outlook client is the default and the current native application is unsupported none of the MAPI or Object Model stuff will apply anymore. Using the Outlook Graph API is probably the future for this sort of requirement.
You get 'em Ed!
PS: Sorry to waste more bits on this, but it seemed appropriate at the time. :)
Paul H. Tarver Tarver Program Consultants, Inc.
-----Original Message----- From: ProfoxTech [mailto:profoxtech-bounces@leafe.com] On Behalf Of Ed Leafe Sent: Monday, August 12, 2024 5:03 PM To: profoxtech@leafe.com Subject: Re: Outlook Automation Help Needed
On Aug 12, 2024, at 16:50, Kurt Wendt kurthwendt@gmail.com wrote:
Hey there Richard - I'm having a problem understanding your Question/Problem - when you talk in Alien Speak!!!
I'm sure I'm not the only one...
First, some outlook emails are sent base64 encoded - I have no idea why. You can copy the gibberish text and paste in an online tool like https://toolbox.googleapps.com/apps/encode_decode/ and it will decode it for you.
So I did just that, and the email had the following line:
Refactor time. 😊 You should be able to swap out those SEEK function + !FOUND() calls with a single INDEXSEEK call.
followed by the complete text of Paul's message, including the full program text. IOW, there were 115 characters of actual new message out of 7792 characters total, which is less that 1.5% of the message. Nothing personal against Richard, but rather Microsoft, and their idiotic default of top quoting and including the full text of the message being replied to.
Sorry, but wasteful practices piss me off, and I just wanted to vent.
-- Ed Leafe
[excessive quoting removed by server]
On Aug 12, 2024, at 17:32, Paul H. Tarver paul@tpcqpc.com wrote:
You get 'em Ed!
Everyone cat get 'em: set your Outlook prefs to not be piggish.
-- Ed Leafe