diff --git a/connector_email.go b/connector_email.go index 9bdfb6b..fb7f20f 100644 --- a/connector_email.go +++ b/connector_email.go @@ -319,45 +319,8 @@ func (e *EmailConnector) Archive(sourceID string) error { } func (e *EmailConnector) Delete(sourceID string) error { - client, err := e.connect() - if err != nil { - return err - } - defer client.Close() - - var uid uint32 - if _, err := fmt.Sscanf(sourceID, "%d", &uid); err != nil { - return fmt.Errorf("invalid source ID: %s", sourceID) - } - - folders := e.config.Watch - if len(folders) == 0 { - folders = []string{"INBOX"} - } - - for _, folder := range folders { - _, err := client.Select(folder, nil).Wait() - if err != nil { - continue - } - - uidSet := imap.UIDSetNum(imap.UID(uid)) - - // Mark deleted - storeCmd := client.Store(uidSet, &imap.StoreFlags{ - Op: imap.StoreFlagsAdd, - Silent: true, - Flags: []imap.Flag{imap.FlagDeleted}, - }, nil) - storeCmd.Close() - - // Expunge - expungeCmd := client.Expunge() - expungeCmd.Close() - return nil - } - - return fmt.Errorf("message not found: %s", sourceID) + // Move to Trash instead of hard-deleting (expunging) + return e.moveMessage(sourceID, "Trash") } func (e *EmailConnector) moveMessage(sourceID, destFolder string) error {