解决编码不支持的崩溃

pull/30/head
陶士涵 4 years ago
parent e8f687d23d
commit d00525e887

@ -181,8 +181,9 @@ func GetMessage(server string, email string, password string,folder string,id ui
// Create a new mail reader // Create a new mail reader
mr, err := mail.CreateReader(r) mr, err := mail.CreateReader(r)
if err != nil { if err != nil {
log.Fatal(err) //log.Fatal(err)
} }
var mailitem =new(MailItem) var mailitem =new(MailItem)
// Print some info about the message // Print some info about the message
@ -197,7 +198,8 @@ func GetMessage(server string, email string, password string,folder string,id ui
if from, err := header.AddressList("From"); err == nil { if from, err := header.AddressList("From"); err == nil {
log.Println("From:", from) log.Println("From:", from)
for _,address:=range from{ for _,address:=range from{
temp,_:=dec.DecodeHeader(address.String()) fromStr:=strings.ToLower(address.String())
temp,_:=dec.DecodeHeader(fromStr)
f+=" "+temp f+=" "+temp
} }
} }
@ -206,12 +208,15 @@ func GetMessage(server string, email string, password string,folder string,id ui
if to, err := header.AddressList("To"); err == nil { if to, err := header.AddressList("To"); err == nil {
log.Println("To:", to) log.Println("To:", to)
for _,address:=range to{ for _,address:=range to{
temp,_:=dec.DecodeHeader(address.String()) toStr:=strings.ToLower(address.String())
temp,_:=dec.DecodeHeader(toStr)
t+=" "+temp t+=" "+temp
} }
} }
mailitem.To=t mailitem.To=t
if subject, err := header.Subject(); err == nil { if subject, err := header.Subject(); err == nil {
subject=strings.ToLower(subject)
s,err:=dec.Decode(subject) s,err:=dec.Decode(subject)
if err!=nil{ if err!=nil{
s,_=dec.DecodeHeader(subject) s,_=dec.DecodeHeader(subject)
@ -233,7 +238,6 @@ func GetMessage(server string, email string, password string,folder string,id ui
b, _ := ioutil.ReadAll(p.Body) b, _ := ioutil.ReadAll(p.Body)
mailitem.Body+=string(b) mailitem.Body+=string(b)
//body,_:=dec.Decode(string(b)) //body,_:=dec.Decode(string(b))
log.Println("Got text: ", string(b))
case *mail.AttachmentHeader: case *mail.AttachmentHeader:
// This is an attachment // This is an attachment
filename, _ := h.Filename() filename, _ := h.Filename()
@ -246,6 +250,7 @@ func GetMessage(server string, email string, password string,folder string,id ui
func GetDecoder()*mime.WordDecoder{ func GetDecoder()*mime.WordDecoder{
dec :=new(mime.WordDecoder) dec :=new(mime.WordDecoder)
dec.CharsetReader= func(charset string, input io.Reader) (io.Reader, error) { dec.CharsetReader= func(charset string, input io.Reader) (io.Reader, error) {
charset=strings.ToLower(charset)
switch charset { switch charset {
case "gb2312": case "gb2312":
content, err := ioutil.ReadAll(input) content, err := ioutil.ReadAll(input)

Loading…
Cancel
Save