From 1a0c53f972cbedafa4291363a13bacd6bfb47b33 Mon Sep 17 00:00:00 2001 From: drew Date: Thu, 31 Jul 2025 11:42:06 +0400 Subject: [PATCH] fix: deletion (#41) --- fetcher/fetcher.go | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/fetcher/fetcher.go b/fetcher/fetcher.go index 8b3683ac2d4674930e3e4e3c960d4d0a1c4b9153..fe1900081112d55a2631021ac737b1442823dbb4 100644 --- a/fetcher/fetcher.go +++ b/fetcher/fetcher.go @@ -266,14 +266,27 @@ func moveEmail(cfg *config.Config, uid uint32, destMailbox string) error { } func DeleteEmail(cfg *config.Config, uid uint32) error { - var trashMailbox string - switch cfg.ServiceProvider { - case "gmail": - trashMailbox = "[Gmail]/Trash" - default: - trashMailbox = "Trash" - } - return moveEmail(cfg, uid, trashMailbox) + c, err := connect(cfg) + if err != nil { + return err + } + defer c.Logout() + + if _, err := c.Select("INBOX", false); err != nil { + return err + } + + seqSet := new(imap.SeqSet) + seqSet.AddNum(uid) + + item := imap.FormatFlagsOp(imap.AddFlags, true) + flags := []interface{}{imap.DeletedFlag} + + if err := c.UidStore(seqSet, item, flags, nil); err != nil { + return err + } + + return c.Expunge(nil) } func ArchiveEmail(cfg *config.Config, uid uint32) error {