Sync all IMAP folders
This commit is contained in:
parent
bb2bcb0576
commit
569b274b2c
4 changed files with 228 additions and 32 deletions
|
|
@ -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 "/"
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue