Sync all IMAP folders

This commit is contained in:
DonVoo 2026-07-05 23:03:52 +02:00
parent bb2bcb0576
commit 569b274b2c
4 changed files with 228 additions and 32 deletions

View file

@ -29,14 +29,35 @@ func OpenIMAPTarget(a Account) (TargetMailbox, error) {
}
type imapTarget struct {
c *simpleIMAP
c *simpleIMAP
delim string
}
func (t *imapTarget) Folders() ([]TargetFolder, error) {
return []TargetFolder{{Name: "INBOX"}}, nil
boxes, err := t.c.listMailboxes()
if err != nil {
return nil, err
}
folders := make([]TargetFolder, 0, len(boxes))
for _, box := range boxes {
if t.delim == "" && box.Delim != "" {
t.delim = box.Delim
}
if hasIMAPAttr(box.Attrs, `\Noselect`) {
continue
}
folders = append(folders, TargetFolder{Name: box.Name, Attrs: box.Attrs})
}
if len(folders) == 0 {
folders = append(folders, TargetFolder{Name: "INBOX"})
}
return folders, nil
}
func (t *imapTarget) Delim() string {
if t.delim != "" {
return t.delim
}
return "/"
}