How to create Global Address List folder in Outlook programmatically? - outlook

I have Outlook plugin (written with Visual C++) which syncs contacts with DAV server (which acts as a replacement to Exchange). Personal contacts are fine but I don't know how to mimic the behavior of Global Address List (GAL).
Ideally, I want to create GAL folder the user will be able to search just like how it happens when Outlook is connected to Exchange. Is it possible at all? Perhaps, it's not possible with Outlook Object Model but still possible with MAPI? Can anybody point me in the right direction on how to start?
I need to support Outlook 2007+ but supporting only the newest versions (for this particular functionality) is an option, too.
Originally, I just synced the entire GAL folder and made it read-only so that Outlook stored the local copy of the entire GAL. This does not work well when the GAL size stretches to thousands of records.

You cannot do that - the address book provider can tell Outlook to only allow searches and never display the actual contents of the container.
You cannot do that with an Outlook folder unless you create your own MAPI store provider: then you can return any data you want depending on what the user is doing.

Related

Powershell Script to Create Outlook 2019 Personal Folder

Currently users have their own inbox folder and due to corporate policy emails will automatically be deleted after a set period of time.
Some emails however users would like to be able to keep for reference.
In order to accomplish allowing users to keep their importasnt emails; a personal folder file .pst needs to be created. The deletion policy will on affect the exchange profile folder that they currently use. This special personal folder should not be touched by the corporate system.
I need to be able to run a powershell script to automatically create this folder for the user (logged in user on the computer) and assign it in outlook 2019 for use, the user will then copy their specific emails into that personal folder. If I can't do it for the current logged in user - then by a collection of usernames and put in their one drive folder ??
Anyone with knowledge of how to or code to do this, I would appreciate your help - while I can code - I'am not a Powershell Guru so specifics and functions that experts might know exactly - I do not know, so please in your answer provide good guidance.
I am using windows 10 .1909 and the powershell version that ships with it.
The Outlook object model provides the AddStoreEx method which adds a Personal Folders file (.pst) in the specified format to the current profile.
Sub CreateUnicodePST()
Dim myNameSpace As Outlook.NameSpace
Set myNameSpace = Application.GetNamespace("MAPI")
myNameSpace.AddStoreEx "c:\" & myNameSpace.CurrentUser & "\.pst",olStoreUnicode
End Sub
After creating additional storage in the Outlook profile users can move items for keeping them locally. Or you may consider creating a VBA script or COM add-in for doing that programmatically. See Walkthrough: Create your first VSTO Add-in for Outlook for getting started quickly.

Can't delete mapi properties created through microsoft graph open extensions into outlook contacts

I have created a script using powershell that uses open extensions, but I didn't know there was a limit to how many open extension types(MAPI properties) I could use. Now I have reached the limit and I can't create anymore mapi properties without deleting the properties I have made previously. But I am unable to figure out how to delete thos properties.
Thanks for your help!!! :)
I have figured out a way to see them with MFCMAPI but not to delete them.
MFCMAPI Interface with some of the properties I have created
Once you ran out of the 65k named properties limit (the total number of mappings in a given store), your mailbox is pretty much kaput. Once a guid/id is mapped to a property tag, it cannot be unmapped.
Creating a new mailbox is pretty much the only option.

Exchange 2010 hidden folder still visible for users

I have setup an Exchange search folder in users mailboxes under the 'Top of Information Store', and set the PR_ATTR_HIDDEN tag to TRUE.
This works for most of my Exchange 2010 environments. But, for some reason, on some servers (different environments) these folders will remain visible in Outlook for many users (not all).
Question here: what causes the hidden folders to be visible, even with the PR_ATTR_HIDDEN tag set to true.
Please advice :)
Thank you,
Daniel
You should create the folder in the root, rather than under "Top of Information Store" if you want to be sure the user never sees it. Using the PR_ATTR_HIDDEN property relies on the client to honor it, so it isn't fool-proof.

Creating link to Outlook messages

Outlook 2007
While composing a new message in outlook can a link be created to other messages?
Whww I am composing a new mail I would like to create a link to asent item, clicking this link should then open the message.
Can this be done?
Microsoft has a support KB on hyperlinks to access Outlook folders and items:
http://support2.microsoft.com/kb/158135
However, the Outlook: scheme is not registered by default with newer versions of outlook.
http://www.slipstick.com/outlook/using-outlook-links/
I verified that the registry editing technique to associate "outlook:" with opening Outlook items ( http://www.slipstick.com/problems/outlook-missing-outlook-protocol/ ) works for Outlook 2013 on Windows 8.1, so I imagine it would work for earlier versions too.
I needed to do the same thing in Outlook 2013. I was able to do so without any registry editing. (I believe such editing is only necessary if you want the links to work outside of Outlook)
I wanted to create a link to an email that I had stored in the following Outlook folder: My Projects\Set 1\. The subject line of the email was Testing links. Here's the steps to do so:
Right-click on the folder in which the target email is stored -> Choose Properties...
Copy the full Location path (in my case this was \\MyEmail#my.domain\My Projects. (Note that this doesn't include the parent folder itself; Use the description box (or some other convenient location) to paste that path, then append the folder. So in my case the full path looked like \\MyEmail#my.domain\My Projects\Set 1.
Open up the email that you want to paste the link into.
Create a normal hyperlink
In the Address field type Outlook: followed by the path you created in Step 2 above, followed by a backslash and tilde, followed by the subject line of the target email. So for me, that whole address looks like this: Outlook:\\MyEmail#my.domain\My Projects\~Testing links
Done.

Outlook 2007 add-in - What event occurs when an user moves an email from a folder to another one?

I am writing an Outlook 2007 add-in. I would like to know what event occurs when user moves an email from a folder to another one (with drag and drop or with move to folder option). My application represents a spam filter, I have a Spam folder, and I need to know whenever user moves an email form inbox to spam or form spam to inbox (this means for me that the email was wrong classified and I have to retrain it).
Thanks
Install the tool Outlook Spy then try out your experiment and see what events Outlook fires under the hood
how about Folder.BeforeItemMove?
Spambayes is a popular Open Source spam filter, which works exactly the way you describe - have a look at how it does it.

Resources