为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Go 中从 imap 服务器获取正文

如何在 Go 中从 imap 服务器获取正文

Go
慕娘9325324 2021-09-10 17:13:13
我使用以下网址中的示例代码成功获取了电子邮件标头列表:https : //godoc.org/code.google.com/p/go-imap/go1/imap#example-Client。但是,我仍然无法获取电子邮件的正文。任何人都可以展示一些可以从 Golang 中的 imap 服务器获取电子邮件正文的工作示例代码吗?
查看完整描述

2 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

我现在想出了如何获取正文。


cmd, _ = c.UIDFetch(set, "RFC822.HEADER", "RFC822.TEXT")


// Process responses while the command is running

fmt.Println("\nMost recent messages:")

for cmd.InProgress() {

    // Wait for the next response (no timeout)

    c.Recv(-1)


    // Process command data

    for _, rsp = range cmd.Data {

        header := imap.AsBytes(rsp.MessageInfo().Attrs["RFC822.HEADER"])

        uid := imap.AsNumber((rsp.MessageInfo().Attrs["UID"]))

        body := imap.AsBytes(rsp.MessageInfo().Attrs["RFC822.TEXT"])

        if msg, _ := mail.ReadMessage(bytes.NewReader(header)); msg != nil {

            fmt.Println("|--", msg.Header.Get("Subject"))

            fmt.Println("UID: ", uid)


            fmt.Println(string(body))

        }

    }

    cmd.Data = nil

    c.Data = nil

}


查看完整回答
反对 回复 2021-09-10
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

您链接到的示例代码演示了如何使用 IMAPFETCH命令获取RFC822.HEADER消息的消息数据项。RFC包含可以从消息中获取的标准数据项列表。

如果您想要整个 mime 格式的消息(标题和正文),则BODY应该使用请求。您可以分别通过请求BODY[HEADER]BODY[TEXT]分别获取标题和消息正文。修改示例程序以使用这些数据项之一应该会得到您想要的数据。


查看完整回答
反对 回复 2021-09-10
  • 2 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信