2014-07-22 27 views
7
में डिकोड करने के लिए कैसे मेल शरीर

मैं इस का एक ईमेल क्लाइंट और भाग पर काम कर रहा हूँ मैं ईमेल शरीर को डिकोड करने की जरूरत है। मैं IMAP पैकेज का उपयोग कर रहा संदेश लाने के लिए लेकिन कोई "डिकोड" विधि है। मैं भी कोई भाग्य के साथ net/mail package या तो जाँच की। केवल हेडर के पास एक पार्सर लगता है। क्या कोई lib है जिसका मैं उपयोग कर सकता हूं?जाओ

उत्तर

1

आप यह जांच सकते हैं कि artagnon/ibex जैसी कोई परियोजना है, जो go-imap package का उपयोग करती है, वह सुविधा प्रदान करती है।
उदाहरण, अपना artagnon/ibex/imap.go#L288-L301 परीक्षण के लिए देखें।

var body []byte 
cmd, err = imap.Wait(c.UIDFetch(set, "BODY.PEEK[]")) 
if (err != nil) { 
    fmt.Println(err.Error()) 
    return nil 
} 
body = imap.AsBytes(cmd.Data[0].MessageInfo().Attrs["BODY[]"]) 
cmd.Data = nil 

bytestring, err := json.Marshal(MessageDetail{string(body)}) 
if (err != nil) { 
    fmt.Println(err.Error()) 
    return nil 
} 
return bytestring 
+0

मैं अंत में इस परियोजना के लिए जाओ छोड़ दिया। ibex lib मदद करने के लिए प्रतीत नहीं होता है। http://stackoverflow.com/a/24903176/3780579 – hey

+0

@ अरे ठीक है, मैंने आपका दूसरा प्रश्न उठाया है और वहां जवाब दिया है। – VonC

7

एक बार जब आप नेट/मेल के साथ ईमेल पार्स और एक Message है, अगर शरीर है उद्धृत-मुद्रण योग्य एन्कोडेड (Content-Transfer-Encoding: quoted-printable):

उदाहरण का उपयोग करें:

r := quotedprintable.NewReader(msg.Body) 
body, err := ioutil.ReadAll(r) // body now contains the decoded body 

यदि शरीर बेस 64 (Content-Transfer-Encoding: base64) का उपयोग करके एन्कोड किया गया है, तो आपको encoding/base64 package का उपयोग करना चाहिए।

+0

और अगर यह एक अलग बात है/चारसेट का उपयोग कर एन्कोड किया मुझे क्या करना चाहिए? । Http://stackoverflow.com/q/24902453/3780579 – hey

+1

देखें [केवल अन्य एन्कोडिंग जो संभव है] (http://en.wikipedia.org/wiki/MIME#Content- ट्रांसफर- एन्कोडिंग) 7 बिट है। इस मामले में आपको कुछ भी करने की ज़रूरत नहीं है। – Ale

+0

ठीक है ... मैं इसे आजमाने की कोशिश कर रहा हूं :) – hey