Forked the emersion/go-imap v1 project.

This commit is contained in:
2025-05-01 11:58:18 +03:00
commit bcc3f95e8e
107 changed files with 16268 additions and 0 deletions

45
imapserver/create.go Normal file
View File

@@ -0,0 +1,45 @@
package imapserver
import (
"strings"
"github.com/emersion/go-imap/v2"
"github.com/emersion/go-imap/v2/internal"
"github.com/emersion/go-imap/v2/internal/imapwire"
)
func (c *Conn) handleCreate(dec *imapwire.Decoder) error {
var (
name string
options imap.CreateOptions
)
if !dec.ExpectSP() || !dec.ExpectMailbox(&name) {
return dec.Err()
}
if dec.SP() {
var name string
if !dec.ExpectSpecial('(') || !dec.ExpectAtom(&name) || !dec.ExpectSP() {
return dec.Err()
}
switch strings.ToUpper(name) {
case "USE":
var err error
options.SpecialUse, err = internal.ExpectMailboxAttrList(dec)
if err != nil {
return err
}
default:
return newClientBugError("unknown CREATE parameter")
}
if !dec.ExpectSpecial(')') {
return dec.Err()
}
}
if !dec.ExpectCRLF() {
return dec.Err()
}
if err := c.checkState(imap.ConnStateAuthenticated); err != nil {
return err
}
return c.session.Create(name, &options)
}