mirror of
https://github.com/wneessen/go-mail.git
synced 2024-12-23 02:50:39 +01:00
Introducing Msg part deletion
This PR introduces a new struct field for the message parts: `del` If the del flag is set to `true`, the msgWriter will ignore this part during the writing process. Additionally, the `part` has now a `Delete` method that lets the user mark the part as deleted This allows middleware to take further control of the Msg and is part of #107
This commit is contained in:
parent
91bfed3f3d
commit
9724a2b523
3 changed files with 17 additions and 2 deletions
8
msg.go
8
msg.go
|
@ -989,7 +989,13 @@ func (m *Msg) encodeString(s string) string {
|
|||
|
||||
// hasAlt returns true if the Msg has more than one part
|
||||
func (m *Msg) hasAlt() bool {
|
||||
return len(m.parts) > 1
|
||||
c := 0
|
||||
for _, p := range m.parts {
|
||||
if !p.del {
|
||||
c++
|
||||
}
|
||||
}
|
||||
return c > 1
|
||||
}
|
||||
|
||||
// hasMixed returns true if the Msg has mixed parts
|
||||
|
|
|
@ -102,7 +102,9 @@ func (mw *msgWriter) writeMsg(m *Msg) {
|
|||
}
|
||||
|
||||
for _, p := range m.parts {
|
||||
mw.writePart(p, m.charset)
|
||||
if !p.del {
|
||||
mw.writePart(p, m.charset)
|
||||
}
|
||||
}
|
||||
if m.hasAlt() {
|
||||
mw.stopMP()
|
||||
|
|
7
part.go
7
part.go
|
@ -16,6 +16,7 @@ type PartOption func(*Part)
|
|||
type Part struct {
|
||||
ctype ContentType
|
||||
enc Encoding
|
||||
del bool
|
||||
w func(io.Writer) (int64, error)
|
||||
}
|
||||
|
||||
|
@ -64,6 +65,12 @@ func (p *Part) SetWriteFunc(w func(io.Writer) (int64, error)) {
|
|||
p.w = w
|
||||
}
|
||||
|
||||
// Delete removes the current part from the parts list of the Msg by setting the
|
||||
// del flag to true. The msgWriter will skip it then
|
||||
func (p *Part) Delete() {
|
||||
p.del = true
|
||||
}
|
||||
|
||||
// WithPartEncoding overrides the default Part encoding
|
||||
func WithPartEncoding(e Encoding) PartOption {
|
||||
return func(p *Part) {
|
||||
|
|
Loading…
Reference in a new issue