go-mail/part.go

67 lines
1.5 KiB
Go
Raw Normal View History

// SPDX-FileCopyrightText: 2022 Winni Neessen <winni@neessen.dev>
//
// SPDX-License-Identifier: MIT
2022-03-14 10:29:53 +01:00
package mail
import (
"bytes"
"io"
)
2022-03-14 10:29:53 +01:00
// PartOption returns a function that can be used for grouping Part options
type PartOption func(*Part)
// Part is a part of the Msg
type Part struct {
ctype ContentType
enc Encoding
w func(io.Writer) (int64, error)
2022-03-14 10:29:53 +01:00
}
// GetContent executes the WriteFunc of the Part and returns the content as byte slice
func (p *Part) GetContent() ([]byte, error) {
var b bytes.Buffer
if _, err := p.w(&b); err != nil {
return nil, err
}
return b.Bytes(), nil
}
// GetContentType returns the currently set ContentType of the Part
func (p *Part) GetContentType() ContentType {
return p.ctype
}
// GetEncoding returns the currently set Encoding of the Part
func (p *Part) GetEncoding() Encoding {
return p.enc
}
// GetWriteFunc returns the currently set WriterFunc of the Part
func (p *Part) GetWriteFunc() func(io.Writer) (int64, error) {
return p.w
}
// SetContentType overrides the ContentType of the Part
func (p *Part) SetContentType(c ContentType) {
p.ctype = c
}
2022-03-14 10:29:53 +01:00
// SetEncoding creates a new mime.WordEncoder based on the encoding setting of the message
func (p *Part) SetEncoding(e Encoding) {
p.enc = e
}
// SetWriteFunc overrides the WriteFunc of the Part
func (p *Part) SetWriteFunc(w func(io.Writer) (int64, error)) {
p.w = w
}
2022-03-14 10:29:53 +01:00
// WithPartEncoding overrides the default Part encoding
func WithPartEncoding(e Encoding) PartOption {
return func(p *Part) {
p.enc = e
}
}