仓颉编程语言实现的 邮件、编码 工具包
- 做一个可以收发邮件的工具库、可以收发邮件、进行常见的编码格式
- 保持较少的代码行数、(收取邮件功能使用频率极低)
1. 使用git方式进行引入, 将依赖放入cjpm.toml
[dependencies]
cj_mail = { git = "https://gitcode.com/niuhuan_cn/cj_mail.git" }
如果您无法使用Canary
版本, 请使用cjc_0.53.13
分支
2. 执行 cjpm update
命令进行依赖更新
3. 在需要使用的仓颉代码中进行引入import cj_mail.*
4. 后续更新需要再次执行cjpm update
进行代码拉取。当仓颉包管理器完善时,本项目将尽快会推送到仓库, 使用版本依赖使用
连接邮件服务器并发送
import cj_mail.*
main(): Int64 {
let smtp = Smtp("smtp.mail.com")
smtp.plain("[email protected]", "mailPassword")
smtp.send(textMail())
smtp.close()
return 0
}
func textMail(): SendMail {
let mail = SendMail()
mail.from.name = "niuhuan"
mail.from.address = "[email protected]"
mail.to = ArrayList(MailAddress("niuhuan", "[email protected]"))
mail.data = "Hello, World!"
mail
}
连接POP3服务器并读取邮件
main() : Int64{
let pop = Pop("pop3.mail.com")
pop.auth("[email protected]", "password")
let(count, mails) = pop.list()
let mailIndex = mails[0][0]
let mail = pop.retrParse(mailIndex)
let(size,text) = pop.retr(mailIndex)
pop.quit()
pop.close()
0
}
main(): Int64 {
let imap = Imap("imap.mail.com")
imap.login("[email protected]", "password")
imap.select("INBOX")
// 列出收件箱中的邮件
let mails = imap.fetchInfo("1:*")
for (mail in mails) {
println("mail : ${mail}")
}
0
}
main(): Int64 {
// 直接编码或解码
let enc = StdBase64.encodeToString(buff)
let dec = StdBase64.decodeFromString(content)
// 对流编码或解码
let encoder = StdBase64.encoder()
encoder.encode(buff)
encoder.finish()
}
传输协议 | 详情 |
---|---|
SMTP | https://datatracker.ietf.org/doc/html/rfc5321 |
POP | https://datatracker.ietf.org/doc/html/rfc1939 |
IMAP | https://datatracker.ietf.org/doc/html/rfc3501 |
SubTypes | https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html |
Base64 / QuotedPrintable | https://datatracker.ietf.org/doc/html/rfc2045 |
- SMTP
- 基础认证
- LOGIN认证
- 发送邮件
- 抄送 / 密送
- 发送文本/html邮件
- 发送附件
- POP
- 基础认证
-
STAT
获取邮件数 -
LIST
列出邮件 -
RETR
读取邮件-
retr
获取文件 -
retrParse
获取邮件内容并解析
-
-
DELE
删除邮件
- IMAP
-
LOGIN
登录 -
SELECT
获取收件箱邮件数量 -
SEARCH
搜索邮件、返回UID列表 -
FETCH
获取邮件内容-
fetch
执行FETCH
获取邮件内容 -
fetchInfo
获取邮件内容并解析(不包含邮件正文) -
fetchFlags
获取UID和Flags -
fetchFullParse
获取邮件内容并解析 (包含邮件正文、正文:文本、附件) -
fetchFullText
获取邮件内容并解析 (包含邮件正文、正文:正文保持纯文本未解析)
-
-
STORE
增改标记(例如已读标记、删除标记、旗帜标记) -
MOVE
移动到其他文件夹
-
- Encoding
- base64
- quoted-printable
版本 | 分支 |
---|---|
0.53.13 | main |
cjpm test -V src/tests
欢迎您的issue或pull request到仓颉TCP或上游仓库地址
fork时请保留上游仓库地址 https://gitcode.com/niuhuan_cn/cj_mail
参考 LICENSE 文件