interface de.jmhoffmann.jwebmail.mail-storage type MIMEHeader ( mime_type: (main_type: string, sub_type: string), content_dispo: (none, inline, attachment), file_name: ?string ) type MailAddr ( name: ?string, address: string ) # send_date is of ISO 8601 date-time format type MailHeader ( send_date: string, written_from: []MailAddr, sender: ?MailAddr, reply_to: []MailAddr, send_to: []MailAddr, cc: []MailAddr, bcc: []MailAddr, subject: string, comments: []string, keywords: []string, mime: MIMEHeader ) type ListMailHeader ( byte_size: int, unread: bool, rec_date: string, mid: string, header: MailHeader ) type Multipart ( preamble: ?string, parts: []MIMEPart, epilogue: ?string ) # exactly one of these fileds must be present type MailBody ( discrete: ?string, multipart: ?Multipart, mail: ?Mail ) type Mail ( head: MailHeader, body: MailBody ) type MIMEPart ( mime_header: MIMEHeader, body: MailBody ) type Sort ( direction: (asc, desc), parameter: (date, size, sender) ) method Init(unix_user: string, mailbox_path: string) -> () method List(folder: string, start: int, end: int, sort: Sort) -> (mail_heads: []ListMailHeader) method Stats(folder: string) -> (mail_count: int, unread_count: int, byte_size: int) method Show(folder: string, mid: string) -> (mail: Mail) # body is base64 encoded method Raw(folder: string, mid: string, path: ?string) -> (header: MIMEHeader, body: string) method Search(folder: string, pattern: string) -> (found: []ListMailHeader) method Folders() -> (folders: []string) method Move(mid: string, from_folder: string, to_folder: string) -> () method Remove(folder: string, mid: string) -> () method AddFolder(name: string) -> (status: (created, skiped)) error NotInitialized() error InvalidFolder(folder: string) error InvalidMID(folder: string, mid: string) error InvalidPathInMail(folder: string, mid: string, path: string) error InvalidSearchPattern(pattern: string) error InvalidUser(unix_user: string) error InvalidMailbox(path: string, not_a_mailbox: bool, user_mismatch: bool)