2015-01-06 16 views
5

このURLのサンプルコードを使用して電子メールヘッダーのリストを正常に取得しました:https://godoc.org/code.google.com/p/go-imap/go1/imap#example-Clientしかし、私はまだ電子メールの本文を取得できませんでした。誰でもGolangのimapサーバーから電子メールの本文を取り出すことができるいくつかの作業サンプルコードを表示できますか?Goでimapサーバーから本文を取得する方法

答えて

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

メッセージのRFC822.HEADERメッセージデータ項目を取得するためにIMAP FETCHコマンドを使用する例を示します。 RFC contains a list of standard data items you can fetch from a message

mime形式のメッセージ全体(ヘッダーと本文の両方)が必要な場合は、BODYを要求する必要があります。 BODY[HEADER]BODY[TEXT]をそれぞれ要求することによって、ヘッダーとメッセージ本文を別々に取得できます。これらのデータ項目の1つを使用するようにサンプルプログラムを変更すると、後にあるデータが取得されます。

+0

ありがとうございました。今私はIMAPプロトコルについてより多くの知識を得るためにRFC 3501を読んでいます。私はまだGo APIがボディをフェッチするように苦労しています。あなたはメールの本文を取り出す作業コードの例を私に見せてもらえますか?ありがとう。 –

関連する問題