codekingpro/portable-devtools
114k
1// Copyright 2014 The Go Authors. All rights reserved.2// Use of this source code is governed by a BSD-style3// license that can be found in the LICENSE file.4 5package multipart_test6 7import (8 "fmt"9 "io"10 "log"11 "mime"12 "mime/multipart"13 "net/mail"14 "strings"15)16 17func ExampleNewReader() {18 msg := &mail.Message{19 Header: map[string][]string{20 "Content-Type": {"multipart/mixed; boundary=foo"},21 },22 Body: strings.NewReader(23 "--foo\r\nFoo: one\r\n\r\nA section\r\n" +24 "--foo\r\nFoo: two\r\n\r\nAnd another\r\n" +25 "--foo--\r\n"),26 }27 mediaType, params, err := mime.ParseMediaType(msg.Header.Get("Content-Type"))28 if err != nil {29 log.Fatal(err)30 }31 if strings.HasPrefix(mediaType, "multipart/") {32 mr := multipart.NewReader(msg.Body, params["boundary"])33 for {34 p, err := mr.NextPart()35 if err == io.EOF {36 return37 }38 if err != nil {39 log.Fatal(err)40 }41 slurp, err := io.ReadAll(p)42 if err != nil {43 log.Fatal(err)44 }45 fmt.Printf("Part %q: %q\n", p.Header.Get("Foo"), slurp)46 }47 }48 49 // Output:50 // Part "one": "A section"51 // Part "two": "And another"52}53 