2
이동 중에 이메일 본문을 가져 오는 방법 (imap 포함)? 지금까지 나는 headers을 발견 할 수 있었지만 시체를 찾을 곳이 없다.이동 중에 이메일 본문을 가져 오는 방법 (imap 사용)?
이동 중에 이메일 본문을 가져 오는 방법 (imap 포함)? 지금까지 나는 headers을 발견 할 수 있었지만 시체를 찾을 곳이 없다.이동 중에 이메일 본문을 가져 오는 방법 (imap 사용)?
BODY[]
또는 BODY.PEEK[]
속성에 대해 FETCH 명령을 보냅니다.
자세한 내용은 IMAP spec을 참조하십시오.
본문 텍스트를 가져 오는 방법을 알아 냈습니다. 다음은 코드입니다.
c.Select("INBOX", true)
//fmt.Print("\nMailbox status:\n", c.Mailbox)
// Fetch the headers of the 10 most recent messages
set, _ := imap.NewSeqSet("4:*")
//if c.Mailbox.Messages >= 10 {
// set.AddRange(c.Mailbox.Messages-9, c.Mailbox.Messages)
//} else {
// set.Add("1:*")
//}
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
}
저는 UIDFetch [1]를 사용하고 있습니다. 그 마술을해서는 안 되는가? [1] https://godoc.org/code.google.com/p/go-imap/go1/imap#Client.UIDFetch – hey
@hey : 예.하지만 속성을 가져 오도록 지시해야합니다. – SLaks
가져올 UID를 어떻게 알 수 있습니까? 내 계획은 모든 이메일 c.UIDFetch ("RFC822.HEADER"설정)을 통해 반복 한 다음 c.UIDFetch (set, "BODY []")를 사용하여 각 메시지를 가져 오는 것입니다. 그러나 가져올 UID를 설정하는 방법을 이해할 수 없습니다. – hey