增加内容解析

pull/30/head
unknown 4 years ago
parent e1f3c0383c
commit cb6ae2e087

@ -3,3 +3,5 @@ module github.com/taoshihan1991/imaptool
go 1.14
require github.com/emersion/go-imap v1.0.4
require github.com/emersion/go-message v0.11.2

@ -4,6 +4,8 @@ import (
"bufio"
"flag"
"fmt"
"io"
"io/ioutil"
"log"
"os"
"strconv"
@ -11,6 +13,7 @@ import (
"github.com/emersion/go-imap"
"github.com/emersion/go-imap/client"
"github.com/emersion/go-message/mail"
)
//全局变量
@ -121,13 +124,74 @@ func main() {
log.Printf("最新的 %d 封信:", maxNum)
for msg := range messages {
log.Println("* " + msg.Envelope.Subject)
log.Printf("* %d :%s\n" ,msg.Uid,msg.Envelope.Subject)
}
if err := <-done; err != nil {
log.Fatal(err)
}
log.Println("读取第几封信信体:")
inLine = readLineFromInput()
mesIndex, _ := strconv.Atoi(inLine)
mesSeqSet := new(imap.SeqSet)
mesSeqSet.AddNum(uint32(mesIndex))
//获取整封信体
var section imap.BodySectionName
items := []imap.FetchItem{section.FetchItem()}
messages = make(chan *imap.Message, 1)
go func() {
if err := c.Fetch(mesSeqSet, items, messages); err != nil {
log.Fatal(err)
}
}()
msg := <-messages
if msg == nil {
log.Fatal("Server didn't returned message")
}
r := msg.GetBody(&section)
if r == nil {
log.Fatal("Server didn't returned message body")
}
mr, err := mail.CreateReader(r)
if err != nil {
log.Fatal(err)
}
// Print some info about the message
header := mr.Header
if date, err := header.Date(); err == nil {
log.Println("Date:", date)
}
if from, err := header.AddressList("From"); err == nil {
log.Println("From:", from)
}
if to, err := header.AddressList("To"); err == nil {
log.Println("To:", to)
}
if subject, err := header.Subject(); err == nil {
log.Println("Subject:", subject)
}
// Process each message's part
for {
p, err := mr.NextPart()
if err == io.EOF {
break
} else if err != nil {
log.Fatal(err)
}
switch h := p.Header.(type) {
case *mail.InlineHeader:
// This is the message's text (can be plain-text or HTML)
b, _ := ioutil.ReadAll(p.Body)
log.Println("Got text: %v", string(b))
case *mail.AttachmentHeader:
// This is an attachment
filename, _ := h.Filename()
log.Println("Got attachment: %v", filename)
}
}
log.Println("结束!")
}

Loading…
Cancel
Save