aboutsummaryrefslogtreecommitdiffstats
path: root/lib/attachment.go
diff options
context:
space:
mode:
Diffstat (limited to 'lib/attachment.go')
-rw-r--r--lib/attachment.go20
1 files changed, 15 insertions, 5 deletions
diff --git a/lib/attachment.go b/lib/attachment.go
index 9246315d..bc29a567 100644
--- a/lib/attachment.go
+++ b/lib/attachment.go
@@ -2,6 +2,7 @@ package lib
import (
"bufio"
+ "bytes"
"io"
"mime"
"net/http"
@@ -17,15 +18,24 @@ import (
type Part struct {
MimeType string
Params map[string]string
- Body io.Reader
+ Data []byte
}
-func NewPart(mimetype string, params map[string]string, body io.Reader) *Part {
+func NewPart(mimetype string, params map[string]string, body io.Reader,
+) (*Part, error) {
+ d, err := io.ReadAll(body)
+ if err != nil {
+ return nil, err
+ }
return &Part{
MimeType: mimetype,
Params: params,
- Body: body,
- }
+ Data: d,
+ }, nil
+}
+
+func (p *Part) NewReader() io.Reader {
+ return bytes.NewReader(p.Data)
}
type Attachment interface {
@@ -131,7 +141,7 @@ func (pa *PartAttachment) WriteTo(w *mail.Writer) error {
}
defer aw.Close()
- if _, err := io.Copy(aw, pa.part.Body); err != nil {
+ if _, err := io.Copy(aw, pa.part.NewReader()); err != nil {
return errors.Wrap(err, "io.Copy")
}
return nil