IMAP: "immediate" delete, without going through Trash folder? - imap

I currently filter some message from my inbox with these steps:
select inbox
pick messages
set \Deleted tag
and then repeat the process after selecting Trash.
Is there a more direct way of disposing of these messages? Or is it just the feature of the Mail server that deleting a message puts it in the trash, and deleting from the trash permantently disposes of it?

I believe you have to call EXPUNGE after setting the tag Deleted.
RFC 3501

Not sure exactly where you're doing these operations. IMAP itself doesn't specify that you move things to a Trash folder. Typically IMAP will let you mark a message as deleted and keep it within your inbox but marked as deleted. You can then choose to "purge" the folder which will actually delete all items marked for deletion.

With my mail client (thunderbird), to direct delete instead of send to trash, I hold down the Shift key along with the Delete key.

Related

TFS Aggregator update parent field when a work item deleted

I use VSTS and tfs aggregator to update parent fields when I have some changes in work items, and every things work fine. Now I want to update parent field when I delete the work Item. and I get the error:
Exception encountered processing notification: TF26198:
The work item does not exist, or you do not have permission to access it.
Stack Trace:
at Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem.LoadWorkItemFromRowSetInternal(Int32 rev, Nullable`1 asof, IWorkItemRowSets witem)
at Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem..ctor(WorkItemStore store, Int32 id)
at Aggregator.Core.Facade.WorkItemRepository.GetWorkItem(Int32 workItemId)
at Aggregator.Core.EventProcessor.ProcessEvent(IRequestContext requestContext, INotification notification)
at Aggregator.WebHooks.Controllers.WorkItemController.Post(JObject payload)
It makes sense when I delete the workItem, there is no work item I could access via it to parent, But is there any way to get the deleted workItem's parent? any idea?
There is no simple answer to this.
We added support for the deleted event at some point, but Aggregator receives the event, after TFS has marked the work item as deleted. The API we use filters out those objects IIRC. The only useful piece of information you have is the ID of the deleted work item. Using PreviousRevision you might be able going back in time, but I haven't tried.
Source code is available and PR are always welcomed.
Update:
You can't do this.
The error is very clear:
The work item does not exist, or you do not have permission to access
it.
When you delete the work item through command, all information is also deleted. This permanently remove work items from the data store. A permanent delete means all information in the WIT data store is deleted and cannot be restored nor reactivated. You definitely could not query and update the deleted Work Item's parent.
Even if the work item exist "somewhere", then you don't have permission to open the work item, and also you can't query information about it. It's a bit of chicken/egg. Take a look at this similar question: TFS API: How to check if a work item has been deleted or is non existent on the TFS Server? (not if it is accessible)

Dovecot ACL Configuration

The following is what i am trying to achieve:
users are allowed to move email between folders, but not fully delete the message.
Using the dovecot ACL:
user=arjo#xxx.nl lrwsip
This translates to:
Lookup, Read, Write, Write-seen, Insert, Post
In a sense, because i dont have the T flag, (Write-Deleted) means that nothing is allowt to be deleted.
Roundcube works somewhat okay, it does not allow me to delete a message. However, it does not allow me to move a message. (which i do want to do)
Outlook does move the messages, but it can not delete them. This makes it so that it creates the messages in the new folder, but they stay behind in the old folder. (it makes a copy).
What should i do to make this function properly?
System setup:
Centos 7
Directadmin 1.5
Dovecot/exim

How to move message to Trash folder using IMAP?

Spent hell lot of time to find a proper way to move or delete messages but didn't found any. Every email service acts different. Please help =(
When I try to perform "set delete flag > expunge"...
aol.com and outlook.com - email just disappears without being copied to "Trash".
gmail.com - email is copied to "All".
mail.ru - the only case where it goes to "Trash" after expunge.
I checked on Thunderbird logs and I saw that when user wants to "Delete" a message it just performs default IMAP "Move" operation. I tried to emulate it with "copy > set delete flag > expunge", but result wasn't the same...
gmail.com - two copies of deleted email in "All" and "Trash" folders.
mail.ru - two copies of deleted email in "Trash" folder.
aol.com and outlook.com - haven't checked yet.
Seems like without "Move" all tries to delete or move a message to a different folder are useless...
Not all IMAP servers will have a Trash folder, since it does not exist in the IMAP RFC. (To find out which folders exist, use the LIST command.)
The world has changed a lot since the IMAP RFC was written, and many users expect a kind of Trash folder with restore/undelete capability. So servers and clients bend the RFC a little to emulate that behaviour. I would suggest that you make your behaviour configurable on your client (e.g. with a setting called something like "Move messages to trash when deleted?") This is what a lot of clients do (e.g. K9 mail)

Outlook 2010 AddIn: Is there an event that fires *before* an item is added to a folder?

I'm writing an Outlook AddIn which is supposed to offer a new special folder which the user can drag mail items into, in order to have them processed by the AddIn.
Now I'd like to be informed whenever the user tries to do that; but before it happens. However, there does not seem to be a way to do that.
Using the folder's BeforeItemMove event, Outlook informs me when the user tries to move an item out of the folder - but there is nothing like a BeforeItemAdd event.
The one thing that comes close is the ItemAdd event of the folder's items collection, but that one fires after an item has been added; at that time, the operation has already been completed. I see no way to tell where the item originally came from or (unlike the BeforeItemMove event) to cancel the operation in case the AddIn determines that it is not valid for some reason.
Theoretically, I should be able to add a BeforeItemMove handler to all the other folders and react to them whenever the move target is the folder managed by my AddIn, but that seems like a bit of overkill... isn't there an easier way?
Can't do that, all MAPI events are asynchronous and fire after something happens.
Outlook does fire some UI evenst synchronously (like BeforeItemMove), but there is nothing like BeforeItemAdd.

thunderbird extension - iterate over messages in a folder

I'm writing a thunderbird extension that should monitor one or more folders (from the left pane of the application) and if there are messages added to one of the monitored folders, they are sent automatically via webdav to a server (for archiving).
I found here how to iterate over all folders in all accounts. My question is how can I iterate over the messages (mails) in a folder
The nsiMsgFolder interface should provide everything you need. If you want to react on incoming messages, I'd register a nsiFolderListener. It gets notified everytime a message is added to the folder.
You could check if these snippets help you.
I also found a somewhat older document detailing the mail event system. It is flagged as in need of technical review but might give you a decent starting point.

Resources