Get all Outlook emails (including ones on server) - vb.net

Edit3: I think I'm going to include Microsoft Graph API as well. Using the interop is acceptable as long as enough data is cached. Otherwise, I'll use the online method.
Edit2: I'd even be fine with changing Outlook's offline settings, but prefer to not have to do this for all folders.
Edit: Programmatically accessing archived mails in an Exchange folder
The third suggestion listed seems to be what I'm looking for. It's possible I've opened an instance in cached mode. I'm not sure yet how to do that through the interop.
This post helped me out: Interop.Outlook - get all emails(Items) within a subfolder
My issue is that it only retrieves some of the messages. I believe it has to do with how many messages Outlook has synced. If I browse the folder in Outlook, the bottom of the list says "Click here to view more on Microsoft Exchange". When clicked, naturally, it shows the rest of the messages.
Is this possible through the interop?
Add-Type -LiteralPath "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Outlook.dll"
$oApp = [Microsoft.Office.Interop.Outlook.ApplicationClass]::new()
$oNamespace = $oApp.GetNamespace("MAPI")
$TargetFolder = $oNamespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox)
$MailItemsWithAttachments = $TargetFolder.Items | Where-Object {$null -ne $_.Attachments} | Select-Object Subject, Attachments
The last line is where I assume needs adjusting. Feel free to provide an example in VB/C#, I'm familiar with both.

What is happening is it's pulling only what is cached for you, you will not be able to pull any more unless you set the cache period to "All" or disable the caching. You can disable by going to account settings, click "change" and then uncheck use cached exchange mode.

Related

How to go to a folder without specify the path

I am creating a button that will open one directory in your computer (for example: C:\Users\NameOfUser\Downloads) when you click it. But if I do this on another computer or from another user account with a different name the button doesn’t work. I just used Process.Start() for the button.
Is there a different way to do this that will work from any user account?
You can get most folder paths like this just by calling Environment.GetFolderPath() with the right Environment.SpecialFolder enum value. Unfortunately, the Downloads special folder in .Net isn't quite "special" enough and (imo) is unreasonably complicated to get. If you actually need to know the path, the correct way is to follow the accepted answer here:
Getting Downloads Folder in C#?
Even worse, it's written for C# and uses code that's not very easy to translate.
The good news is there's also a NuGet package I'd expect you can use from VB. The even better news is you don't really care about the exact path in this case. You just want to open an Explorer window via Process.Start(). That means you can use this shortcut (also available via the other question):
Process.Start("shell:Downloads")

SharePoint Workflow Only Works For Me?

Ok, I have a workflow built in SharePoint 2010, built in SharePoint Designer. It is set up to begin whenever a new item is created. The library is also set up to create new items based on email attachments. So the goal is for users to email the attachments to the library and the workflow takes over.
The workflow only works for me. The other people attempting to use it are listed as Full Control in the permissions. They are using the correct email address, and the library is creating the new items based on the attachments. The problem is that the workflow keeps saying error occurred.
The error says something about some columns needing different types of data, but when I email to the library it goes off without a hitch.
I am completely stumped as to what could be different about them sending the email instead of me.
Sorry I got kind of long winded, and thanks in advance for any help.
The system account is not allowed to initiate workflow on its own. There is a powershell that you need to run to enable system account to run workflow. Also try impersonation in workflow.
Here found it.
stsadm.exe –o setproperty –propertyname declarativeworkflowautostartonemailenabled –propertyvalue yes
Not sure what was wrong with it, but I just deleted it then rebuilt it and now it works. Don't think I did anything different so I'm not sure.

Persisting VBA/VBScript macro settings

I've created an Outlook (2010) VBScript macro that has some user-configurable settings. I've googled and checked the likely resources and can't figure out a good way to persist them. I'm currently storing them in the body of a mail item! It don't get much kludgier than that!
Should I use the Windows registry? An ini file? Or??? And whether registry, file, or???, what key/folder/??? would I use?
Just before hitting 'Post' on this I tried one more google search and hit on this: http://www.jkp-ads.com/articles/DistributeMacro08.asp.
The gist I took away was, ini file or registry are both kosher. One nice thing about VBA's use of the registry is it automatically puts "app" data in the approved place, just need to give your "app" a key. Since my data is just a big string with parsing code already in place, I used strData = GetSetting(strAppKey, strSection, strLeafKey) and SaveSetting(strAppKey, strSection, strLeafKey, strData) and voila, all is good.
The standard Outlook way of storing settings, especially if they relate to a particular mailbox/store and can be accessed from multiple machines connected to the same mailbox, is to use a hidden message stored in one of the well known folders, such as the Inbox.
The hidden MAPI messages can be accessed using MAPIFolder.GetStorage: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.mapifolder.getstorage.aspx

Can't Delete Document in Domino Xpage Application

I have few simple Xpages, where i test and learn the newest features in Domino 8.5.3.
Now, after some latest changes somehow i'm not able to delete Documents. The Application asks me for the User Name and password, which i enter and which are correct. However, nothing happens (well, the system thinks few seconds over) and i'm asked for my credentials again... and again.. If i press "cancel" -> i got the expected result -> error 401.
The strange thing as well, if even i give for the "anonymous" the editor rights with the "delete documents" checked, i'm still asked for the credentials...
Well, i think I need now some ideas and tips where can i look after in order to solve the "undeletable documents" problem.
The "Delete" button is made using the Simple Action "Delete Selected Documents".
Update: After looking into the logs (thanks Simon O'Doherty for the hint below!) i found out the following message
28.02.12 19:20: Exception Thrown
com.ibm.xsp.acl.NoAccessSignal: NotesException: Notes error: Document locking is enabled. You must lock the document before deleting.
After removing the setting "Allow Document locking" everything works fine.
The next question, however, and it seems to be intresting, if i want to use this setting - how to make the standart actions (it looks like at least "Delete Selected Documents" has some problems) work properly ?
Or do i have to use SSJS only ?
In the ACL settings. Click Advanced tab. Check that "Maximum Internet name and password access" is at least a level that allows you to edit documents.
May need to restart your browser for that to be registered.
If it is still an issue at that point then the following Debug may give more hints.
Check the XPages logs in the IBM_TECHNICAL_SUPPORT folder of the server.
Check the elements on the page are not being pulled from another location that would require access.
Check for Authors/Readers fields.
The following debug on the server will allow you to see when an ACL call is made, what is asked for and what it got.
Warning This is very verbose debug, so it should only be activated for the test. Also do not paste the results anywhere externally without first sanitizing. (as it would be confidential to you).
DEBUG_THREADID=1
DEBUG_SERVER_ACL=2
I have also seen this behaviour in our application.
The issue is caused by the "Allow document locking" option.
Either you do not need this feature; then just uncheck in the application properties. If you intend to use the feature, you have to lock the document in your code prior to deleting it.
Add a execute script simple action before delete simple action and write the following code
var doc:NotesDocument = currentDocument.getDocument();
doc.lock();
or
dataSource.getDocument().lock();
It might be as easy as:
- check your ACL. Do you have delete rights? Default is off

Saving program shared data in Exchange Public Folder

I have a question reffering to Public Folders on Exchange Server.
I have an application (Outlook Com Addin) that need to share settings amonge every Exchange User that have access to Public Folders.
I was thinking about storing settings in MAPI assotiated message (hidden MAPI message). Wirting\Reading data from this message works fine, but I don't have good place to save this item.
I am looking from some sort of global folder or root folder that every user have. I tried All Public Folders folder, but noone can store any item there. I was also thinking about NON_IPM_SUBTREE but I am not sure which folder can be used to write there something.
Maybe someone faced this problem already and have some thoughts about this it?
And to make things clear. I am using Extended MAPI, but if you know any solution that involves Outlook API, I would be interested in that too.
Best regards,
There are no predefined PF folders. Most installations will have "Outlook Security Settings", but that is about it.
There is also a set of hidden folders where Outlook stores f/b info.
Keep in mind that PF is optional as of Exchange 2007. Exchange 2010 does not install PF store by default.