组件分享之后端组件——用Go编写的IMAP4rev1库go-imap
组件分享之后端组件——用Go编写的IMAP4rev1库go-imap
背景
近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。
组件基本信息
- 组件:go-imap
- 开源协议:MIT license
内容
本节我们分享一个用Go编写的IMAP4rev1库go-imap。它可以用来构建客户机和/或服务器。
客户端案例如下:
package mainimport ("log""github.com/emersion/go-imap/client""github.com/emersion/go-imap"
)func main() {log.Println("Connecting to server...")// Connect to serverc, err := client.DialTLS("mail.example.org:993", nil)if err != nil {log.Fatal(err)}log.Println("Connected")// Don't forget to logoutdefer c.Logout()// Loginif err := c.Login("username", "password"); err != nil {log.Fatal(err)}log.Println("Logged in")// List mailboxesmailboxes := make(chan *imap.MailboxInfo, 10)done := make(chan error, 1)go func () {done <- c.List("", "*", mailboxes)}()log.Println("Mailboxes:")for m := range mailboxes {log.Println("* " + m.Name)}if err := <-done; err != nil {log.Fatal(err)}// Select INBOXmbox, err := c.Select("INBOX", false)if err != nil {log.Fatal(err)}log.Println("Flags for INBOX:", mbox.Flags)// Get the last 4 messagesfrom := uint32(1)to := mbox.Messagesif mbox.Messages > 3 {// We're using unsigned integers here, only subtract if the result is > 0from = mbox.Messages - 3}seqset := new(imap.SeqSet)seqset.AddRange(from, to)messages := make(chan *imap.Message, 10)done = make(chan error, 1)go func() {done <- c.Fetch(seqset, []imap.FetchItem{imap.FetchEnvelope}, messages)}()log.Println("Last 4 messages:")for msg := range messages {log.Println("* " + msg.Envelope.Subject)}if err := <-done; err != nil {log.Fatal(err)}log.Println("Done!")
}
服务端案例如下:
package mainimport ("log""github.com/emersion/go-imap/server""github.com/emersion/go-imap/backend/memory"
)func main() {// Create a memory backendbe := memory.New()// Create a new servers := server.New(be)s.Addr = ":1143"// Since we will use this server for testing only, we can allow plain text// authentication over unencrypted connectionss.AllowInsecureAuth = truelog.Println("Starting IMAP server at localhost:1143")if err := s.ListenAndServe(); err != nil {log.Fatal(err)}
}
go-imap 本身包含对多个 IMAP 扩展的支持。这包括:
- APPENDLIMIT
- CHILDREN
- ENABLE
- IDLE
- IMPORTANT
- LITERAL+
- MOVE
- SASL-IR
- SPECIAL-USE
- UNSELECT
更多内容可以参考其官方提供的README
本文声明:
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
http://www.taodudu.cc/news/show-2511391.html
相关文章:
- 07-11-Exchange Server 2019-配置-Outlook 2019-IMAP4
- imap能和服务器同步文件夹吗,IMAP 同步
- python邮件处理(1)-IMAP收取邮件
- Exchange2013中POP3和IMAP4
- outlook显示imap服务器已关闭,允许 Outlook Web App 中的最终用户查看 POP3、IMAP4 和 SMTP 服务器设置...
- 禁用电子邮件服务器,启用或禁用对邮箱中的邮箱的 POP3 或 IMAP4 Exchange Server
- Exch:POP3 和 IMAP4 操作指南
- 理解概念IMAP4、IMAP4rev1 client protocol、POP3、SMTP、MIME、RFC822
- IMAP4 读取收件箱的问题
- python IMAP4命令详解
- IMAP4
- IMAP4协议
- IMAP4命令详解
- 电子邮件协议:SMTP、POP3、IMAP4
- IMAP4协议介绍nbsp;工作原理
- Qt编写邮件客户端IMAP4(一)收取邮件
- python爬虫之Scrapy CrawlSpider说明——以阳光平台为例
- 爬虫基础知识+Scrapy框架
- Python中的爬虫
- Scrapy爬虫框架的原理与实战[阳光政务爬虫项目]
- scrapy框架之spider
- Scrapy框架基础了解
- Python爬虫之scrapy分布式爬虫
- Scrapy框架之传智项目整理
- 爬虫技术:scrapy 知识点一
- item的介绍与使用-2.0
- Python爬虫 9-Scrapy框架初探
- python之Srcapy框架浅谈
- 分布式的Scrapy过于能打!十个resquests都顶不住! ๑乛◡乛๑ Scrapy框架使用方法
- scrapy settings和管道的深入
组件分享之后端组件——用Go编写的IMAP4rev1库go-imap相关推荐
- 组件分享之后端组件——基于Golang语言的游戏服务器框架leaf
组件分享之后端组件--基于Golang语言的游戏服务器框架leaf 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类 ...
- 组件分享之后端组件——用于将日志写入滚动文件的组件包lumberjack
组件分享之后端组件--用于将日志写入滚动文件的组件包lumberjack 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包 ...
- 组件分享之后端组件——国际化组件go-i18n
组件分享之后端组件--国际化组件go-i18n 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件 ...
- 组件分享之后端组件——阿里妈妈前端团队出品的开源接口管理工具RAP第二代rap2-delos...
组件分享之后端组件--阿里妈妈前端团队出品的开源接口管理工具RAP第二代rap2-delos 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件 ...
- 组件分享之后端组件——一个简单且高度可扩展的分布式文件系统seaweedfs
组件分享之后端组件--一个简单且高度可扩展的分布式文件系统seaweedfs 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题 ...
- 组件分享之后端组件——基于Golang实现的高级消息队列协议 (AMQP) 的消息代理garagemq...
组件分享之后端组件--基于Golang实现的高级消息队列协议 (AMQP) 的消息代理garagemq 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成 ...
- 组件分享之后端组件——Redis数据库的一个Go客户端redigo
组件分享之后端组件--Redis数据库的一个Go客户端redigo 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类 ...
- 组件分享之后端组件——基于Golang实现的database/sql附加功能组件dbr
组件分享之后端组件--基于Golang实现的database/sql附加功能组件dbr 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题, ...
- 组件分享之后端组件——基于Golang实现的基于LDAP V3协议的操作包ldap
组件分享之后端组件--基于Golang实现的基于LDAP V3协议的操作包ldap 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续 ...
- 组件分享之前端组件——用于自定义表单的前端组件form-create
组件分享之前端组件--用于自定义表单的前端组件form-create 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各 ...
最新文章
- 提问与回答:全国大学生智能汽车竞赛的第十五届的7月中旬问答
- python安装没有pip选项_python-3.x – 在ubuntu上没有pip的python安装
- 推荐 7 个 Vue2、Vue3 源码解密分析的开源项目
- java执行shell命令
- OrCAD分裂元件的使用方法
- .NET Framework 4.8预览
- 几种开源NOSQL数据库
- JavaScript字符集编码与解码
- iOS重写和成员变量访问权限
- 三十万,买一只基金,放着不管,五年后会怎么样?
- 121 项目 008 笔记向 maven-study 常用插件
- iOS -[JYBDScanCardManage configIDScan] in JYBDScanCardManage.o等静态库问题
- 前端 encodeURI 为什么要编码两次
- 酷派D530刷机指引之民间ROM
- json数据循环左侧三级导航菜单
- 基于CList链表类的故障树分析算法的实现
- 多级父子关系数据库设计
- oracle 定时 analyze,Oracle工具:Analyze
- 服务端Skynet(五)——如何搭建一个实例
- linux添加javahome