[Exchange-Online][EWS][C#][Windows]: How do I mark all mails in a folder as read?

Hi,
I'm developing a C# application in Visual Studio 2013 Pro Update 2 to query an Exchange Online mailbox folder and read mails into my CRM solution. I can connect without a problem, read mails without a problem, mark individual emails as read without a problem,
etc. but I don't seem to be able to mark all emails in a specific folder as being un/read.
I can see that in Exchange 2013 that the following code would do the trick, but it doesn't work for Exchange Online:-
Folder folder = Folder.Bind(service,folderID);
folder.MarkAllItemsAsRead(true);
To mark an individual mail as being read I'm using this code:-
public void MarkAsRead(ExchangeService exchangeService, ItemId itemID)
Item mess = Item.Bind(exchangeService, itemID);
EmailMessage message = mess as EmailMessage;
message.IsRead = true;
message.Update(ConflictResolutionMode.AlwaysOverwrite);
Does anyone know if Exchange Online has a method to mark all mails as read and if so, how do I call it?
Thanks,
Mike

I should probably say that when attempting to call the MarkAllItemsAsRead() method from my code I get the following error:-
"Microsoft.Exchange.WebServices.Data.ServiceVersionException was caught
  HResult=-2146233088
  Message=Method MarkAllItemsAsRead is only valid for Exchange Server version Exchange2013 or later.
  Source=Microsoft.Exchange.WebServices
  StackTrace:
       at Microsoft.Exchange.WebServices.Data.EwsUtilities.ValidateMethodVersion(ExchangeService service, ExchangeVersion minimumServerVersion, String methodName)
       at Microsoft.Exchange.WebServices.Data.ExchangeService.MarkAllItemsAsRead(FolderId folderId, Boolean readFlag, Boolean suppressReadReceipts)
       at Microsoft.Exchange.WebServices.Data.Folder.MarkAllItemsAsRead(Boolean suppressReadReceipts)
       at Renishaw.EWS.ExchangeWebService.GetEmails(ExchangeService service) in c:\pvcs_gotdotnet\work\CRMEmailProcessing\CRMEmailProcessing\EWS\ExchangeWebService.cs:line 89
       at Renishaw.CRM.Service.EmailManager.ReadEmails() in c:\pvcs_gotdotnet\work\CRMEmailProcessing\CRMEmailProcessing\Service\EMailManager.cs:line 122
  InnerException: "

Similar Messages

  • [Exchange-Online][EWS][C#][Windows 7] Move email based on their categories

    Hello,
    I'd like to move emails in the Inbox to a separate folder based on their category.
    I'm using Microsoft.Exchange.WebServices (15.0.0.0) to connect to an ExchangeVersion.Exchange2013_SP1 instance. I'm using C# in VS2013 and the .NET 4 framework but can take examples from other versions if they exist.
    I've tried using SearchFilter without much success through ExchangeService.FindItems, but the 'Categories' property seems to be tricky to configure.
    Does anyone have an example of how I can select/move emails from a folder based on their category membership?
    Thanks,
    Mike

    It should work okay what matters is what's stored in the Keywords property eg
    The only other thing that would be important would be that Indexing is working okay in Exchange as this query relies on the Indexes (eg check your event logs on the server to make sure you not getting any indexing errors).
    One thing you can do to test this is use the EWSEditor
    http://ewseditor.codeplex.com/once you have connected right click the folder when the Items are located and select Search from the menu. Then using the AQS option try running some queries against the folder try the Conical version(which is what I gave
    you) and the non conical Category:Clare . If it works okay in the EWSEditor but not in your code then you have an issue somewhere else in your code. I would also do the simple thingss like try then with a new message you send yourself as it maybe something
    to do with Items not being indexed in the past etc.
    Cheers
    Glen

  • [E2007] [EWSMA] [C#] [Windows]: How can I retrieve all mail sent via this Exchange server (during a time period)

    Hi there,
    I'm quite new to Exchange and I'm not sure how to do this.
    I've been looking at both push and pull mechanisms. 
    The query is conceptually simple. I can do it for one user, I think:
    var filter = new SearchFilter.IsGreaterThanOrEqualTo(ItemSchema.DateTimeSent, after);
    var folder = Folder.Bind(exchange, WellKnownFolderName.SentItems);
    var results = folder.FindItems(filter, new ItemView(1000));
    ....but I'm not sure how to it for all users.
    Many thanks!

    Hi,
    This may be another option for you...
    Is your Exchange hosted for you / Office365 or on premises?
    If it’s on premises and you have storage space you could use a Transport Agent (and specifically a Routing Agent).
    Using an agent you can take a copy of ALL email going in and out of a server (that's the whole email not just the headers or a log entry for it), then all you need to do is store it somewhere. I'd suggest just store it on file with an index (with date information
    and the path to the email on disk etc) in a SQL database. Then when you need your "emails in a date range" simply run a query against your SQL database to get the list of emails. You can always run a batch job every now and then to remove emails older than
    a certain date.
    If your Exchange is hosted (or you are not allowed to install software on the server) this won't be an option.
    Regards,
    Scott
    Scott Quinn | C# developer & messaging specialist (for hire). Contact me at http://au.linkedin.com/in/scottquinn

  • How can I mark ALL mail read in Mail?

    For the past few months my mail program has constantly said that I have two unread messages in it. I have gone through every folder on there and selected all the messages and marked them as Read but there is still a "2" on the icon in the Dock. It's not a huge deal but it's been kind of bugging me since it seems like it should be a simple fix. Anyone have any ideas for how I can get rid of this? Is there a "Master" way to to mark all messages read in the Mail program, in case I'm missing some somewhere? Thank you in advance.
    I'm not sure if this helps but the email account that it says the "2 unread messages" are in is a school Outlook account. I have tried deleting the account and readding it and the same "2 unread messages" notification is still there.

    In mail enter "unread" without the quotes, in the search box. HIt the Enter key.
    You will then see a new item appear, "Status: Message is Unread"
    Select this status and all your unread messages will appear.

  • How do you 'mark all' mail messages and then delete in Iphone 5?

    I cannot do a mass delete of my emails any more in iphone 5 - how do you get the edit functions back onto the screen once you have 'marked all' the messages?

    As Chgrist1 said, that is how it works. Having looked as how Outlook stores mail, and everything else. It is a wonder anything ever comes out that is useable. PST files are a mess. First thing they do is pull the email apart and store header, body and attachments is three different places.
    You will also find (most likely) that your accounts in Outlook were POP and the default in Thunderbird is IMAP. merging IMAP and POP files and folders is fraught with difficulties and dangers. It would be a brave developer that tried that in an import.
    In the case of IMAP all your mail is one the server, so import is not all that important. However copying a gigabyte or two of of outlook mail into your imap server could exhaust your available message storage space there and cause the import to fail completely.
    So If you want to do what your saying, first confirm that your not using IMAP mail. Otherwise your experience is most likely going to be exceedingly poor.
    If you are using POP mail, then changing the setting in your pop account to cause it to use the global inbox will make a single mail account appear, "Local Folder", with your outlook mail as a sub folder of that.
    Dragging a folder from the imported outlook tree to Local folders is not difficult, as long as you remember that folders hang of other folders, so your dragging them to a parent, not a position on the screen you like.

  • [Exchange-Online][EWS][c#][Windows 8.1] When creating appointment using impersonation "Set action is invalid for property" error occurs.

    I have an Outlook add-in that creates appointments to a load of Office 365 calendars. It used to work well but suddenly I have hit a problem.
    The basic calling code is
    Appointment appointment = new Appointment(exchangeService);
       appointment.Subject = subject;
       appointment.Body = body;
       appointment.Location = location;
       appointment.IsAllDayEvent = allDay;
       appointment.LegacyFreeBusyStatus = LegacyFreeBusyStatus.Busy;
       appointment.IsOnlineMeeting = false;
       appointment.Save(SendInvitationsMode.SendToNone);
    This still works fine on my own Office 365 mailbox but if I switch to another, using Impersonation, the Save line now throws the error "Set action is invalid for property."
    There does not seem to be a problem with impersonation. The line
    exchangeService.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, selectedUserEmail);
    runs OK and afterwards the exchangeService's ImpersonatedUserID gives the correct email address.
    If I look at the appointment object in the Watch window immediately after the line that creates it has run I can see that most of the properties have an entry like:
    appointment.AdjacentMeetingCount' threw an exception of type 'Microsoft.Exchange.WebServices.Data.ServiceObjectPropertyException'.
    Also, several properties including Subject are not listed in the expanded appointment object in the Watch window.
    However, entering appointments.Subject explicitly in the Watch window does give the correct result.
    I have used the floating watch to check the value of each property straight after it is set and each one is as expected.
    I am at a loss as to what to check next and would be grateful for all ideas.
    Mike VE

    Thanks for the reply Jason. I did as you suggested and found that it was the IsOnlineMeeting that caused the problem. Once that was commented out everything worked as expected. On checking I see that this property is ReadOnly for everyone except the
    organizer of the meeting. Clearly the Impersonate role is not regarded as the organiser.
    I don't think it is going to matter so long as the user in whose calendar the appointment is created has fully access to the appointment, which seems to be the case.
    Thanks for your help.
    Mike VE

  • How do I mark all mail as read

    iPad mail shows hundreds of unread eamils but no messages have teh blue dot showing unread.  this happened when updated to IOS 7.  How do I reset to have no unread messages?

    Yeah, this is something that I used OFTEN on my Treo... Is there an official way to submit suggestions, or do developers see this stuff?

  • I want to make a note and put in a folder like we just place a notepad by right clicking in windows,how should I create a note in a folder in mac pro ...?

    I want to make a note and put in a folder like we just place a notepad by right clicking in windows,how should I create a note in a folder in mac pro ...?

    There's no "New File" shortcut in Finder on Macs, so you have to launch the application you want (eg TextEdit), create your document, and save it there. There are workarounds using Terminal (the touch command), AppleScript/Automator, and using third-party launch programs like Quicksilver, but natively, it can't be done.
    Matt

  • How di i delete all mail at once

    How do you delete all mail at once?

    Very likely, depending on your email account.
    The way I would do it is in fact to click on each email.  If you press "edit", you can then click six or eight in each screen (which will place checkmarks next to each as clicked), and then simply delete them.  It's really a very quick process.

  • How to mark all mail read?

    Anyone have any idea how to mark all mail read instead of going through all of them?

    It's one of those *** was Apple thinking issues. No, you can not mass delete emails. It's one-by-one only. Sorry.

  • [Exchange-Online][EWS-XML][JAVA][OAUTH2] Getting HTTP status code 500 when using OAUTH2 client credential grant flow as authorization method

    Hi,
    i'm working on enhancing a service to be able to use OAUTH2 as authentication protocol with client credential grant flow when talking to exchange online ( like described here:
    http://blogs.msdn.com/b/exchangedev/archive/2015/01/22/building-demon-or-service-apps-with-office-365-mail-calendar-and-contacts-apis-oauth2-client-credential-flow.aspx ). I gave my application the rights 
    Office 365 Exchange Online : Application Permissions: "Have full access via EWS to all mailboxes ....."
    Windows Azure Active AD: Application Permissions: "Read Directory data", Delegate Permissions: "Enable sign-on and read users_ profiles" 
    I receive a access token from log.windows.net:
    decoded token:
     typ: "JWT",
     alg: "RS256",
     x5t: "MnC_VZcATfM5pOYiJHMba9goEKY"
     aud: "https://outlook.office365.com/",
     iss: "https://sts.windows.net/<TENANT_ID>/",
     iat: 1426584502,
     nbf: 1426584502,
     exp: 1426588402,
     ver: "1.0",
     tid: "<TENANT_ID>",
     roles: [
      "full_access_as_app"
     oid: "1ddbdc11-b80d-4d1d-91b9-5b07a6b82659",
     sub: "1ddbdc11-b80d-4d1d-91b9-5b07a6b82659",
     idp: "https://sts.windows.net/TENANT_ID/",
     appid: "<APP_ID_IN_AZURE_AD>",
     appidacr: "2"
    <SIGNATURE>
    If i use that token then to send a EWS XML to exchange online i get a 500 HTTP status code back:
    With impersonation in the request:
    [http.wire ]: >> "POST /EWS/Exchange.asmx HTTP/1.1[\r][\n]"
    [http.wire ]: >> "Authorization: Bearer <MY_ACCESS_TOKEN>[\r][\n]"
    [http.wire ]: >> "SoapAction: "http://schemas.microsoft.com/exchange/services/2006/messages/GetFolder"[\r][\n]"
    [http.wire ]: >> "Content-Type: text/xml; charset=utf-8[\r][\n]"
    [http.wire ]: >> "User-Agent: OpenScapeUC EWS HttpClient/3.0[\r][\n]"
    [http.wire ]: >> "client-request-id: 5b2c7e1a-656d-4f43-bd34-ea2d6290611f[\r][\n]"
    [http.wire ]: >> "Date: Tue, 17 Mar 2015 10:08:17 GMT[\r][\n]"
    [http.wire ]: >> "Content-Length: 1189[\r][\n]"
    [http.wire ]: >> "Host: outlook.office365.com[\r][\n]"
    [http.wire ]: >> "Connection: Keep-Alive[\r][\n]"
    [http.wire ]: >> "[\r][\n]"
    [http.wire ]: >> "<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Header><ns2:ExchangeImpersonation xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types"
    xmlns:ns3="http://schemas.microsoft.com/exchange/services/2006/messages"><ns2:ConnectingSID><ns2:PrimarySmtpAddress><THE_MAILBOX_I_WANT_TO_ACCESS></ns2:PrimarySmtpAddress></ns2:ConnectingSID></ns2:ExchangeImpersonation><ns2:RequestServerVersion
    xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ns3="http://schemas.microsoft.com/exchange/services/2006/messages" Version="Exchange2007_SP1"/></S:Header><S:Body><ns3:GetFolder xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types"
    xmlns:ns3="http://schemas.microsoft.com/exchange/services/2006/messages"><ns3:FolderShape><ns2:BaseShape>IdOnly</ns2:BaseShape><ns2:AdditionalProperties><ns2:FieldURI FieldURI="folder:FolderId"/></ns2:AdditionalProperties></ns3:FolderShape><ns3:FolderIds><ns2:DistinguishedFolderId
    Id="contacts"><ns2:Mailbox><ns2:EmailAddress><THE_MAILBOX_I_WANT_TO_ACCESS></ns2:EmailAddress></ns2:Mailbox></ns2:DistinguishedFolderId></ns3:FolderIds></ns3:GetFolder></S:Body></S:Envelope>"
    [http.wire ]: << "HTTP/1.1 500 Internal Server Error[\r][\n]"
    [http.wire ]: << "Cache-Control: private[\r][\n]"
    [http.wire ]: << "Content-Type: text/xml; charset=utf-8[\r][\n]"
    [http.wire ]: << "Server: Microsoft-IIS/8.0[\r][\n]"
    [http.wire ]: << "request-id: ec42b5c5-f8dc-498d-ae16-d851a852058c[\r][\n]"
    [http.wire ]: << "Set-Cookie: ClientId=<DELETED>; expires=Wed, 16-Mar-2016 10:08:17 GMT; path=/; secure; HttpOnly[\r][\n]"
    [http.wire ]: << "X-CalculatedBETarget: am2pr02mb0387.eurprd02.prod.outlook.com[\r][\n]"
    [http.wire ]: << "X-DiagInfo: AM2PR02MB0387[\r][\n]"
    [http.wire ]: << "X-BEServer: AM2PR02MB0387[\r][\n]"
    [http.wire ]: << "X-AspNet-Version: 4.0.30319[\r][\n]"
    [http.wire ]: << "Set-Cookie: exchangecookie=<DELETED>; expires=Thu, 17-Mar-2016 10:08:17 GMT; path=/; HttpOnly[\r][\n]"
    [http.wire ]: << "Set-Cookie: [email protected]=<DELETED>; expires=Thu, 16-Apr-2015 10:08:18 GMT; path=/EWS; secure; HttpOnly[\r][\n]"
    [http.wire ]: << "Set-Cookie: [email protected]=<DELETED>; expires=Thu, 16-Apr-2015 10:08:18 GMT; path=/EWS; secure; HttpOnly[\r][\n]"
    [http.wire ]: << "X-Powered-By: ASP.NET[\r][\n]"
    [http.wire ]: << "X-FEServer: DB5PR01CA0064[\r][\n]"
    [http.wire ]: << "Date: Tue, 17 Mar 2015 10:08:17 GMT[\r][\n]"
    [http.wire ]: << "Content-Length: 891[\r][\n]"
    [http.wire ]: << "Accept-Ranges: none[\r][\n]"
    [http.wire ]: << "Connection: keep-alive[\r][\n]"
    [http.wire ]: << "[\r][\n]"
    Without impersonation in the request:
    Request
    [http.wire ]: >> "POST /EWS/Exchange.asmx HTTP/1.1[\r][\n]"
    [http.wire ]: >> "Authorization: Bearer <MY_ACCESS_TOKEN>[\r][\n]"
    [http.wire ]: >> "SoapAction: "http://schemas.microsoft.com/exchange/services/2006/messages/GetFolder"[\r][\n]"
    [http.wire ]: >> "Content-Type: text/xml; charset=utf-8[\r][\n]"
    [http.wire ]: >> "User-Agent: OpenScapeUC EWS HttpClient/3.0[\r][\n]"
    [http.wire ]: >> "client-request-id: 20bd722f-8276-4ebb-8d58-ce45d31f3ed4[\r][\n]"
    [http.wire ]: >> "Date: Tue, 17 Mar 2015 09:33:24 GMT[\r][\n]"
    [http.wire ]: >> "Content-Length: 871[\r][\n]"
    [http.wire ]: >> "Host: outlook.office365.com[\r][\n]"
    [http.wire ]: >> "Connection: Keep-Alive[\r][\n]"
    [http.wire ]: >> "[\r][\n]"
    [http.wire ]: >> "<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Header><ns2:RequestServerVersion xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types"
    xmlns:ns3="http://schemas.microsoft.com/exchange/services/2006/messages" Version="Exchange2007_SP1"/></S:Header><S:Body><ns3:GetFolder xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ns3="http://schemas.microsoft.com/exchange/services/2006/messages"><ns3:FolderShape><ns2:BaseShape>IdOnly</ns2:BaseShape><ns2:AdditionalProperties><ns2:FieldURI
    FieldURI="folder:FolderId"/></ns2:AdditionalProperties></ns3:FolderShape><ns3:FolderIds><ns2:DistinguishedFolderId Id="contacts"><ns2:Mailbox><ns2:EmailAddress><THE_MAILBOX_I_WANT_TO_ACCESS></ns2:EmailAddress></ns2:Mailbox></ns2:DistinguishedFolderId></ns3:FolderIds></ns3:GetFolder></S:Body></S:Envelope>"
    Response:
    [http.wire ]: << "HTTP/1.1 500 Internal Server Error[\r][\n]"
    [http.wire ]: << "Cache-Control: private[\r][\n]"
    [http.wire ]: << "Content-Type: text/xml; charset=utf-8[\r][\n]"
    [http.wire ]: << "Server: Microsoft-IIS/8.0[\r][\n]"
    [http.wire ]: << "request-id: 923ba463-490f-4ac9-a496-993cd8a44115[\r][\n]"
    [http.wire ]: << "Set-Cookie: ClientId=<DELETED>; expires=Wed, 16-Mar-2016 09:33:24 GMT; path=/; secure; HttpOnly[\r][\n]"
    [http.wire ]: << "X-CalculatedBETarget: am2pr02mb0387.eurprd02.prod.outlook.com[\r][\n]"
    [http.wire ]: << "X-DiagInfo: AM2PR02MB0387[\r][\n]"
    [http.wire ]: << "X-BEServer: AM2PR02MB0387[\r][\n]"
    [http.wire ]: << "X-AspNet-Version: 4.0.30319[\r][\n]"
    [http.wire ]: << "Set-Cookie: exchangecookie=<DELETED>; expires=Thu, 17-Mar-2016 09:33:25 GMT; path=/; HttpOnly[\r][\n]"
    [http.wire ]: << "Set-Cookie: [email protected]=<DELETED>; expires=Thu, 16-Apr-2015 09:33:25 GMT; path=/EWS; secure; HttpOnly[\r][\n]"
    [http.wire ]: << "Set-Cookie: [email protected]=<DELETED>; expires=Thu, 16-Apr-2015 09:33:25 GMT; path=/EWS; secure; HttpOnly[\r][\n]"
    [http.wire ]: << "X-Powered-By: ASP.NET[\r][\n]"
    [http.wire ]: << "X-FEServer: AM3PR07CA0038[\r][\n]"
    [http.wire ]: << "Date: Tue, 17 Mar 2015 09:33:24 GMT[\r][\n]"
    [http.wire ]: << "Content-Length: 799[\r][\n]"
    [http.wire ]: << "Accept-Ranges: none[\r][\n]"
    [http.wire ]: << "Connection: keep-alive[\r][\n]"
    If i use BASIC authentication and impersonation the request is successfully. 
    Has anyone an idea why i might get the error 500 in that scenario?

    For EWS to work with App Token, you need to do two more things. One you already did: Set the impersonation header. Two is to set the X-AnchorMailbox http request header to the smtp address of the mailbox you want to access. This routes the request instantly
    to the right backend.
    Hope this helps.
    Thank you! Matthias

  • [Exchange-Online][EWS][Android]Is it possible to reach Exchange room resource mailbox through Office 365 API for Java/Android

    Hi guys,
    Title covers largely what I'm trying to do. I'm trying to create an app in Android Studio that uses the Office365 for Android API (https://github.com/OfficeDev/O365-Android-Start).
    In this app i want to bind calander events to Locations that i create in Exchange online. Is this possible? If so, how? Have not been succesful in finding in any information on the issue so far.
    At the moment when the user wants to create an event, the user just types in the "location", but this is just a string and not bound to anything. I would prefer to get a dropdown of all the room resources I have on Exchange and that this will make
    that the location. This to prevent 2 seperate meetings happening in the same room at the same time.
    (Was sent here from the O365-forums, so sorry if this is a misplaced post)
    Thanks for any and all help.
    Mathias

    So then I'm guessing you want to be able to retrieve the list of resources in the address book? If the Exchange admins have configured room lists, you could use those:
    https://msdn.microsoft.com/EN-US/library/office/dn643730(v=exchg.150).aspx.

  • Why does iPhone put photos into random folders like "965YOKDJ" in windows explorer? I want all photos in one folder, not separated in a seemingly random manner.

    When I plug my iphone 5s into my windows computer and open it in windows explorer, all the photos are separated into folders like "965YOKDJ" and "823WGTMA". The photos don't seem to be separated in a logical way. I would rather them to all be in one folder or, if they are separated, at least have them separated in a logical way like date or something. I doubt, with it being an Apple product, there would be a setting I can change on the iPhone to change the way it labels photos and folders but if anyone knows a way to make this easier and more logical can you tell me? Also if any Apple employees happen to read this could you perhaps improve the way the iphone labels its photos?

    Thats the way the files have been configured since the original iPhone so I don't think they are going to change it anytime soon (since it's been 7 years) but you can certainly put in some feedback on apple.com/feedback
    I feel you pain somewhat on this one (at least back when I owned a PC).  The folders are not logical nor the naming scheme.  There is no setting you can change to change this as this is created by the operating system.  I would have to assume it is some sort of code.  I have noticed that when I do not take a picture for a long while, a new folder is formed, but again, I'm not sure of the criteria on how the iOS knows when to make a new folder inside the DCIM, but I have also seen with with some digital cameras that are not phones  

  • How to move all already spam marked e-mails to spam folder?

    Some e-mails are alread marked wich spam (there is a burn icon on it), but still in my main received folder. How to move them all to spam folder at once?

    Did you try select the emails, drag and drop on the Trash Folder?
    Try create a filter to move the emails marked as spam to the Spam folder.
    *[http://mzl.la/1pNQ4G3 Organize Your Messages by Using Filters]

  • How can I select all images in a folder without subfolders?

    Either I am looking with my nose (as we would say in The Netherlands) or it is not possible:
    I have a folder A with images and in that folder there's a subfolder B. I want to rename all the images inside folder A so I want to select them all to begin with. However, clicking on folder A in LR also show all the images in folder B and therefore CTRL-A also selects them all. Now, how can I only select the ones in folder A?
    Danny.

    Winston's example certainly provides a method for the situation you described, but it doesn't help if you have multiple, nested subfolders. But my piece of advice is to be patient. Things will get better on this front.
    - Pierre

Maybe you are looking for