|
@@ -1,7 +1,6 @@
|
|
package backends
|
|
package backends
|
|
|
|
|
|
import (
|
|
import (
|
|
- "fmt"
|
|
|
|
"github.com/flashmob/go-guerrilla/mail"
|
|
"github.com/flashmob/go-guerrilla/mail"
|
|
"github.com/flashmob/go-guerrilla/mail/mime"
|
|
"github.com/flashmob/go-guerrilla/mail/mime"
|
|
)
|
|
)
|
|
@@ -27,10 +26,9 @@ func init() {
|
|
func StreamMimeAnalyzer() *StreamDecorator {
|
|
func StreamMimeAnalyzer() *StreamDecorator {
|
|
|
|
|
|
sd := &StreamDecorator{}
|
|
sd := &StreamDecorator{}
|
|
- sd.Decorate =
|
|
|
|
|
|
|
|
|
|
+ sd.Decorate =
|
|
func(sp StreamProcessor, a ...interface{}) StreamProcessor {
|
|
func(sp StreamProcessor, a ...interface{}) StreamProcessor {
|
|
-
|
|
|
|
var (
|
|
var (
|
|
envelope *mail.Envelope
|
|
envelope *mail.Envelope
|
|
parseErr error
|
|
parseErr error
|
|
@@ -42,18 +40,20 @@ func StreamMimeAnalyzer() *StreamDecorator {
|
|
}))
|
|
}))
|
|
|
|
|
|
Svc.AddShutdowner(ShutdownWith(func() error {
|
|
Svc.AddShutdowner(ShutdownWith(func() error {
|
|
- fmt.Println("shutdownewr")
|
|
|
|
- //_ = parser.Close()
|
|
|
|
|
|
+ if err := parser.Close(); err != nil {
|
|
|
|
+ Log().WithError(err).Error("error when closing parser in mimeanalyzer")
|
|
|
|
+ }
|
|
|
|
+ parser = nil
|
|
return nil
|
|
return nil
|
|
}))
|
|
}))
|
|
|
|
|
|
sd.Open = func(e *mail.Envelope) error {
|
|
sd.Open = func(e *mail.Envelope) error {
|
|
|
|
+ parser.Open()
|
|
envelope = e
|
|
envelope = e
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|
|
sd.Close = func() error {
|
|
sd.Close = func() error {
|
|
-
|
|
|
|
if parseErr == nil {
|
|
if parseErr == nil {
|
|
_ = parser.Close()
|
|
_ = parser.Close()
|
|
return nil
|
|
return nil
|
|
@@ -63,22 +63,19 @@ func StreamMimeAnalyzer() *StreamDecorator {
|
|
}
|
|
}
|
|
|
|
|
|
return StreamProcessWith(func(p []byte) (int, error) {
|
|
return StreamProcessWith(func(p []byte) (int, error) {
|
|
- _ = envelope
|
|
|
|
-
|
|
|
|
if _, ok := envelope.Values["MimeParts"]; !ok {
|
|
if _, ok := envelope.Values["MimeParts"]; !ok {
|
|
envelope.Values["MimeParts"] = &parser.Parts
|
|
envelope.Values["MimeParts"] = &parser.Parts
|
|
}
|
|
}
|
|
-
|
|
|
|
if parseErr == nil {
|
|
if parseErr == nil {
|
|
parseErr = parser.Parse(p)
|
|
parseErr = parser.Parse(p)
|
|
if parseErr != nil {
|
|
if parseErr != nil {
|
|
- Log().WithError(parseErr).Error("mime parse error")
|
|
|
|
|
|
+ Log().WithError(parseErr).Error("mime parse error in mimeanalyzer")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
return sp.Write(p)
|
|
return sp.Write(p)
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
return sd
|
|
return sd
|
|
|
|
+
|
|
}
|
|
}
|