emersion / go-imap

📥 An IMAP library for clients and servers
MIT License
2.02k stars 288 forks source link

v2 STORE flags not returned #579

Closed resolutecake closed 5 months ago

resolutecake commented 6 months ago

— SELECT the mailbox name where message is

I think the below should return the new flags. it returns nothing

in the case below UID is an existing newly appended message the appended message had nil flags

    var storeFlags = imap.StoreFlags{
        // Op int set/add/del
        Op: imap.StoreFlagsAdd,
        // Silent bool: new flag value is not returned
        //Silent: true,
        // Flags []Flag
        Flags: []imap.Flag{imap.FlagDeleted},
    }
    var storeOptions = imap.StoreOptions{
        // UnchangedSince uint64 // requires CONDSTORE
    }
    var seqSet = imap.NumSetNum(uint32(UID))
    // returns like fetch
    var fetch = i.Client.UIDStore(seqSet, &storeFlags, &storeOptions)
    defer parl.Close(fetch, &err)
    var m, items int
    for {

        // a message affected by STORE
        var message = fetch.Next()
        if message == nil {
            break
        }
        m++
        for {

            // an item from STORE for message
            var item = message.Next()
            if item == nil {
                break
            }
            items++
            switch it := item.(type) {
            default:
                err = perrors.ErrorfPF("UNIMPLEMENTED TYPE: %T", it)
                return
            }
        }
    }
    parl.Log("messages %d items %d", m, items)
resolutecake commented 6 months ago

it appears STORE operation is carried out

emersion commented 6 months ago

Does https://github.com/emersion/go-imap/pull/580 help?