PMail/server/utils/goimap/action.go
jinnrry cf3bab6c9f feature/v2.8.0
支持Imap协议
升级所有依赖
修复部分bug
2025-01-04 16:15:35 +08:00

60 lines
5.2 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package goimap
type Action interface {
Create(session *Session, path string) CommandResponse // 创建邮箱
Delete(session *Session, path string) CommandResponse // 删除邮箱
Rename(session *Session, oldPath, newPath string) CommandResponse // 重命名邮箱
List(session *Session, basePath, template string) CommandResponse // 浏览邮箱
Append(session *Session, item string) CommandResponse // 上传邮件
Select(session *Session, path string) CommandResponse // 选择邮箱
/*
读取邮件的文本信息,且仅用于显示的目的。
ALL只返回按照一定格式的邮件摘要包括邮件标志、RFC822.SIZE、自身的时间和信封信息。IMAP客户机能够将标准邮件解析成这些信息并显示出来。
BODY只返回邮件体文本格式和大小的摘要信息。IMAP客户机可以识别这些细腻并向用户显示详细的关于邮件的信息。其实是一些非扩展的BODYSTRUCTURE的信息。
FAST只返回邮件的一些摘要包括邮件标志、RFC822.SIZE、和自身的时间。
FULL同样的还是一些摘要信息包括邮件标志、RFC822.SIZE、自身的时间和BODYSTRUCTURE的信息。
BODYSTRUCTUR是邮件的[MIME-IMB]的体结构。这是服务器通过解析[RFC-2822]头中的[MIME-IMB]各字段和[MIME-IMB]头信息得出来的。包括的内容有:邮件正文的类型、字符集、编码方式等和各附件的类型、字符集、编码方式、文件名称等等。
ENVELOPE信息的信封结构。是服务器通过解析[RFC-2822]头中的[MIME-IMB]各字段得出来的,默认各字段都是需要的。主要包括:自身的时间、附件数、收件人、发件人等。
FLAGS此邮件的标志。
INTERNALDATE自身的时间。
RFC822.SIZE邮件的[RFC-2822]大小
RFC822.HEADER在功能上等同于BODY.PEEK[HEADER]
RFC822功能上等同于BODY[]。
RFC822.TEXT功能上等同于BODY[TEXT]
UID返回邮件的UID号UID号是唯一标识邮件的一个号码。
BODY[section] <<partial>>返回邮件的中的某一指定部分返回的部分用section来表示section部分包含的信息通常是代表某一部分的一个数字或者是下面的某一个部分HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, MIME, and TEXT。如果section部分是空的话那就代表返回全部的信息包括头信息。
BODY[HEADER]返回完整的文件头信息。
BODY[HEADER.FIELDS ()]:在小括号里面可以指定返回的特定字段。
BODY[HEADER.FIELDS.NOT ()]:在小括号里面可以指定不需要返回的特定字段。
BODY[MIME]:返回邮件的[MIME-IMB]的头信息在正常情况下跟BODY[HEADER]没有区别。
BODY[TEXT]:返回整个邮件体,这里的邮件体并不包括邮件头。
**/
Fetch(session *Session, mailIds, dataNames string, uid bool) CommandResponse
Store(session *Session, mailId, flags string, uid bool) CommandResponse // STORE 命令用于修改指定邮件的属性,包括给邮件打上已读标记、删除标记
Close(session *Session) CommandResponse // 关闭文件夹
Expunge(session *Session) CommandResponse // 删除已经标记为删除的邮件,释放服务器上的存储空间
Examine(session *Session, path string) CommandResponse // 只读方式打开邮箱
Subscribe(session *Session, path string) CommandResponse // 活动邮箱列表中增加一个邮箱
UnSubscribe(session *Session, path string) CommandResponse // 活动邮箱列表中去掉一个邮箱
LSub(session *Session, path, mailbox string) CommandResponse // 显示那些使用SUBSCRIBE命令设置为活动邮箱的文件
/*
@category:
MESSAGES 邮箱中的邮件总数
RECENT 邮箱中标志为\RECENT的邮件数
UIDNEXT 可以分配给新邮件的下一个UID
UIDVALIDITY 邮箱的UID有效性标志
UNSEEN 邮箱中没有被标志为\UNSEEN的邮件数
*/
Status(session *Session, mailbox string, category []string) CommandResponse // 查询邮箱的当前状态
Check(session *Session) CommandResponse // sync数据
Search(session *Session, keyword, criteria string, uid bool) CommandResponse // 命令可以根据搜索条件在处于活动状态的邮箱中搜索邮件,然后显示匹配的邮件编号
Copy(session *Session, mailId, mailBoxName string) CommandResponse // 把邮件从一个邮箱复制到另一个邮箱
CapaBility(session *Session) CommandResponse // 返回IMAP服务器支持的功能列表
Noop(session *Session) CommandResponse // 什么都不做,连接保活
Login(session *Session, username, password string) CommandResponse // 登录
Logout(session *Session) CommandResponse // 注销登录
IDLE(session *Session) CommandResponse // 进入IDLE状态
Unselect(session *Session) CommandResponse // 取消邮箱选择
Custom(session *Session, cmd string, args string) CommandResponse
}