如何在Go中从IMAP服务器获取正文内容

6
2个回答

3
我现在知道如何获取正文内容了。
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
}

1
你提供的示例代码演示了使用IMAP FETCH命令获取邮件消息的RFC822.HEADER数据项。RFC 包含可从邮件中获取的标准数据项的列表
如果您想要整个mime格式的消息(包括头部和正文),那么请求BODY应该就可以了。您可以通过分别请求BODY[HEADER]BODY[TEXT]来单独获取标题和消息正文。修改示例程序以使用其中一个数据项即可获得所需的数据。

谢谢James。现在我正在阅读RFC 3501,以获取更多关于IMAP协议的知识。我仍然在努力让Go API工作来获取正文。你能否给我展示一些可以获取邮件正文的工作代码示例?谢谢。 - user1663023

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接