func (p *Part) Encode(writer io.Writer) error {
	if p.Header == nil {
		p.Header = make(textproto.MIMEHeader)
	}
	cte := p.setupMIMEHeaders()
	// Encode this part.
	b := bufio.NewWriter(writer)
	p.encodeHeader(b)
	if len(p.Content) > 0 {
		b.Write(crnl)
		if err := p.encodeContent(b, cte); err != nil {
			return err
		}
	}
	if p.FirstChild == nil {
		return b.Flush()
	}
	// Encode children.
	endMarker := []byte("\r\n--" + p.Boundary + "--")
	marker := endMarker[:len(endMarker)-2]
	c := p.FirstChild
	for c != nil {
		b.Write(marker)
		b.Write(crnl)
		if err := c.Encode(b); err != nil {
			return err
		}
		c = c.NextSibling
	}
	b.Write(endMarker)
	b.Write(crnl)
	return b.Flush()
}
func (p *Part) Encode(writer io.Writer) error {
	if p.Header == nil {
		p.Header = make(textproto.MIMEHeader)
	}
	cte := p.setupMIMEHeaders()
	
	b := bufio.NewWriter(writer)
	p.encodeHeader(b)
	if len(p.Content) > 0 {
		b.Write(crnl)
		if err := p.encodeContent(b, cte); err != nil {
			return err
		}
	}
	if p.FirstChild == nil {
		return b.Flush()
	}
	
	endMarker := []byte("\r\n--" + p.Boundary + "--")
	marker := endMarker[:len(endMarker)-2]
	c := p.FirstChild
	for c != nil {
		b.Write(marker)
		b.Write(crnl)
		if err := c.Encode(b); err != nil {
			return err
		}
		c = c.NextSibling
	}
	b.Write(endMarker)
	b.Write(crnl)
	return b.Flush()
}
func ( p * Part ) Encode ( writer io . Writer ) error { if p . Header == nil { p . Header = make ( textproto . MIMEHeader ) } cte := p . setupMIMEHeaders ( ) // Encode this part. b := bufio . NewWriter ( writer ) p . encodeHeader ( b ) if len ( p . Content ) > 0 { b . Write ( crnl ) if err := p . encodeContent ( b , cte ) ; err != nil { return err } } if p . FirstChild == nil { return b . Flush ( ) } // Encode children. endMarker := [ ] byte ( " \r \n " + p . Boundary + " " ) marker := endMarker [ : len ( endMarker ) - 2 ] c := p . FirstChild for c != nil { b . Write ( marker ) b . Write ( crnl ) if err := c . Encode ( b ) ; err != nil { return err } c = c . NextSibling } b . Write ( endMarker ) b . Write ( crnl ) return b . Flush ( ) }
// Encode writes this Part and all its children to the specified writer in MIME format.
Encode writes this Part and all its children to the specified writer in MIME format .